返回首页

gbase数据、南大通用产品文档:GBase8sSYSERRORS

更新日期:2024年09月11日

syserrors 系统目录表存储有关错误、
警告和参考消息
(由使用 mi_db_error_raise(
)
DataBlade API 函数的 DataBlade 模块和用户定义的例程返回)的信息。
syserrors 表具有以下列。

类型
解释
sqlstate
CHAR(5)
与错误关联的 SQLSTATE 值。
locale
CHAR(36)
与此版本的消息相关联的语言环境(例如:
en_us.8859-1)
level
SMALLINT
保留供将来使用
seqno
SMALLINT
保留供将来使用
message
VARCHAR(255)
消息文本

要创建新的消息,将一行直接插入 syserrors 表中。缺省情况下,所有用户都可以查
看此表,但只有具有 DBA 特权的用户才能对其进行修改。
sqlstate、locale、level 和 seqno 列的组合索引只允许使用唯一值。

在 SPL 例程内,请使用 LET 语句将值分配给您已定义的变量。
如果您未赋值给变量,或通过传递给例程的参数,或通过 LET 语句,则该变量有未定义
的值。
未定义的值与 NULL 值不同。如果您尝试以 SPL 例程内未定义的值使用变量,则会收到
错误。
您可以下列任一方式赋值给例程变量:

使用 LET 语句。

使用 SELECT INTO 语句。

将 CALL 语句与带有 RETURNING 子句的过程一起使用。

使用 EXECUTE PROCEDURE INTO 或 EXECUTE FUNCTION INTO 语句。

LET 语句
以 LET 语句,您可以等号(=)和有效的表达式或函数名称来使用一个或多个变量名称。
下图中的每一示例都是有效的 LET 语句。
图: 有效的 LET 语句。
LET a = 5;
LET b = 6; LET c = 10;
LET a,b = 10,c+d;
LET a,b = (SELECT cola,colb
FROM tab1 WHERE cola=10);
LET d = func1(x,y);
GBase 8s 允许您将值分配给 opaque 类型变量、row 类型变量,或 row 类型的字段。您还
可将外部函数或另一 SPL 函数的值返回到 SPL 变量。
假设您定义命名的 row 类型 zip_t 和 address_t,如 图 1 所示。每当您定义 row 类型变量
时,您必须在可使用它之前初始化该变量。下图展示您可能如何定义和初始化 row 类型变
量。您可使用任何 row 类型值来初始化该变量。
图: 定义和初始化 row 类型变量。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 278 -

DEFINE a address_t;
LET a = ROW ('A Street', 'Nowhere', 'AA',
ROW(NULL, NULL))::address_t
在您定义并初始化 row 类型变量之后,您可编写下图所示的 LET 语句。
图: 编写 LET 语句。
LET a.zip.z_code = 32601;
LET a.zip.z_suffix = 4555;
-- Assign values to the fields of address_t
提示: 请以 variable.field or variable.field.field 的形式使用点符号表示法来访问 row 类型的字
段,如 处理 row 类型数据 描述的那样。
假设您定义 opaque-type point,其包含定义二维点的两个值,且该值的文本表示为 '(x,y)'。
您还可能有计算圆的周长的函数 circum(),给定的点 '(x,y)' 和半径 r。
如果您定义以一点为圆心的 opaque 类型 center,以及计算圆的周长的函数 circum(),基于
点和半径,您可为每一变量编写变量声明。在下图中,c 是一个 opaque 类型变量,d 保存
外部函数 circum() 返回的值。
图: 编写变量声明。
DEFINE c point;
DEFINE r REAL;
DEFINE d REAL;

LET c = '(29.9,1.0)' ;
-- Assign a value to an opaque type variable

LET d = circum( c, r );
-- Assign a value returned from circum()
GBase 8s SQL 指南:语法 详细地描述 LET 语句的语法。

赋值给变量的其他方式
您可使用 SELECT 语句来从数据库访存一个值,并直接地将它分配给变量,如下图所示。

图: 从数据库访存一个值,并直接地将它分配给变量。
SELECT fname, lname INTO a, b FROM customer
WHERE customer_num = 101
请使用 CALL 或 EXECUTE PROCEDURE 语句来将由 SPL 函数或外部函数返回的值分
配给一个或多个 SPL 变量。您可能使用下图中的一个语句来将来自 SPL 函
数 read_address 的全名和地址返回到指定的 SPL 变量内。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 279 -

图: 返回来自 SPL 函数的全名和地址。
EXECUTE FUNCTION read_address('Smith')
INTO p_fname, p_lname, p_add, p_city, p_state,
p_zip;

CALL read_address('Smith')
RETURNING p_fname, p_lname, p_add, p_city,
p_state, p_zip;

功能描述
删除一个重写规则。
语法格式
DROP RULE [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]
参数说明

IF EXISTS
如果该规则不存在,会抛出一个NOTICE。

name
要删除的现存规则名称。

table_name
该规则应用的表名。

CASCADE
自动级联删除依赖于此规则的对象。

RESTRICT
缺省情况下,如果有任何依赖对象,则拒绝删除此规则。
示例
--删除重写规则newrule
DROP RULE newrule ON mytable;
相关命令
CREATE RULE