GBase 8s
运维管理
文章

南大通用GBase8s 常用SQL语句(六十)

发表于2026-01-14 15:16:0457次浏览10个评论

使用 SPECIFIC 子句来指定特定名称
可以为用户定义的过程声明一个在数据库中唯一的特定名称。特定名称当您重载过程时有用。
DOCUMENT 子句
DOCUMENT 子句中带引号的字符串提供对 UDR 的摘要和描述。该字符串存储在 sysprocbody 系统目录表中,适用于 UDR 的用户。
拥有对数据库访问权限的任何人均可查询 sysprocbody 系统目录表,以获取对存储在数据库中的一个或全部 UDR 描述。
例如,以下查询获取对 SPL 函数 所显示的 SPL 过程 raise_prices 的描述:
SELECT data FROM sysprocbody b, sysprocedures p
WHERE b.procid = p.procid
–join between the two catalog tables
AND p.procname = ‘raise_prices’
– look for procedure named raise_prices
AND b.datakey = ‘D’;-- want user document
先前的查询返回以下文本:
USAGE: EXECUTE PROCEDURE raise_prices( xxx )
xxx = percentage from 1 - 100
对于外部过程,无论您是否使用 END PROCEDURE 关键字,均可以在 CREATE PROCEDURE 语句末尾包含 DOCUMENT 子句。
使用 WITH LISTING IN 选项
WITH LISTING IN 子句指示编译时发送警告的文件名。编译 UDR 之后,此文件包含一条或多条警告消息。该列表文件创建于数据库驻留的计算机上。
如果您不使用 WITH LISTING IN 子句,则编译器不生成警告列表。
在 UNIX™ 上,如果您指定文件名而非目录,将在数据库驻留的计算机上的主目录中创建此列表文件。如果您在此计算机上没有主目录,则在根目录中(名为 “/” 的目录)创建此文件。
在 Windows™ 上,如果果您指定文件名而非目录,则在数据库位于本地计算机的情况下,在当前工作目录中创建此列表文件。否则,缺省目录为 %GBASEDBTDIR%\bin 。
SPL 函数
SPL函数是用存储过程语言(SPL)编写的 UDR ,且不会返回一个值。要编写并注册 SPL 例程,请使用 CREATE PROCEDURE 语句。在 CREATE PROCEDURE 和 END PROCEDURE 关键字之间嵌入适当的 SQL 和 SPL 语句。还可以将 DOCUMENT 和 WITH FILE IN 选项放在该函数后面。
分析 SPL 例程,(尽可能)优化例程,并以可执行文件的形式存储在系统目录表中。SPL 函数的主题存储在 sysprocbody 系统目录表中。关于函数的其他信息存储在其它系统目录表中,包括 sysprocedures 、sysprocplan 和 sysprocauth 。
如果 CREATE PROCEDURE 语句的 Statement Block 部分为空,则当调用函数时,没有操作发生。当您试图建立未编码的过程,可能在开发阶段使用如“虚拟”过程。
如果在参数列表后面指定了可选子句,则您必须在此子句之后紧邻 Statement Block 之前加上分号。
以下示例创建了 SPL 函数:
CREATE PROCEDURE raise_prices ( per_cent INT )
UPDATE stock SET unit_price =
unit_price + (unit_price * (per_cent/100));
END PROCEDURE
DOCUMENT “USAGE: EXECUTE PROCEDURE raise_prices( xxx )”,
"xxx = percentage from 1 - 100 "
WITH LISTING IN ‘/tmp/warn_file’;

评论

登录后才可以发表评论
冰凤发表于 6个月前
12
冰凤发表于 6个月前
123
冰凤发表于 6个月前
1234
冰凤发表于 6个月前
1
冰凤发表于 6个月前
12345
用户头像
mittens发表于 6个月前
学习了
GBase用户51935发表于 2个月前
向大佬学习
ljt98发表于 2个月前
闪闪发光
GBase用户51883发表于 2个月前
三人行必有我师
GBase用户51882发表于 2个月前
来了