由于 GBase 8s 提供例程重载,您可以使用相同的名称但不同的参数列表来定义多个用户定义的例程(UDR)。在以下情况中您可能希望重载 UDR :
使用与内置例程相同的名称创建 UDR (如 equal( ))来处理新的用户定义的数据类型。
您创建在其中子类型从超类型继承数据表示和 UDR 的 type hierarchies。
您创建 distinct 类型,它是拥有与现有数据类型相同的内部存储表示的数据类型,但是名称不同,并且没有强制转型就无法与源类型相比较。Distinct 类型从它们的源类型继承UDR 。
关于唯一标识每个 UDR 的例程特征符的简述,请参阅例程重载以及例程签名 。
使用 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 子句。