当用 CREATE PROCEDURE 或 CREATE FUNCTION 创建或注册一个 UDR 时,用 UDR 要求的参数名和数据类型声明一个参数列表。(对于用 C 或 Java™ 语言编写的外部例程,参数名是可选的。)有关声明参数的详细信息,请参阅例程参数列表。
如果不同的例程具有相同的标识符但是声明的参数个数不同,用户定义的例程可以是过载的。有关重载的更多信息,请参阅 例程重载以及例程签名。
如果试图以超出 UDR 要求的参量来执行 UDR ,就会接收到一条错误消息。
如果已少于 UDR 要求的参量来调用 UDR,那么就可以将省略的参量说成缺少。数据库服务器将缺少的参量初始化为它们相应的缺省值。这个初始化过程发生在 UDR 主体中第一条可执行语句之前。
如果缺少的参量没有缺省值。则 GBase 8s 发出错误。
func( x::integer, y ); -- VALID if only these 2 routines func( x::integer, y, z ); -- have the same 'func' identifier func( x::integer, y ); -- NOT VALID if both routines have func( x::float, y ; -- same identifier and 2 parameters
func( x, y default 1 ) func( x, y default 1, z default 2 )如果两个同时称作 func 的已注册的 UDR 具有以上所示的特征符,那么语句 EXECUTE func(100) 调用 func(100,1)。
不能使用命名的参数提供缺省值的子集,除非这些参数遵循例程特征符的位置顺序。即,不能跳过一些参量而依赖于数据库服务器提供它们的缺省值。
func( x, y default 1, z default 2 )可执行:
func( x=1, y=3 )但不能执行:
func( x=1, z=3 )