EXECUTE FUNCTION 语句的工作机制

对于要随同 EXECUTE FUNCTION 语句执行的用户定义的函数(UDF),必须存在下列条件:

如果 EXECUTE FUNCTION 指定的参数少于用户自定义的函数预期,则未指定的参数称为丢失的。将丢失的参数初始化为它们相应的缺省值,如果已经定义了这些缺省值。在 例程参数列表 中描述为参数指定缺省值的语法。

在下列条件下,EXECUTE FUNCTION 返回错误:

如果在数据库内 function 名称不唯一,则必须指定足够的 parameter_type 信息来明确该名称。要获取更多关于调用函数时如何指定参数的信息,请参阅 参数 一节。

在一些 DDL 语句中,外部 UDR 的 specific name 有效,但在调用该函数的上下文中无效。

如果 GBase 8s 不可解析模糊的函数名称,该名称的特征符不同于仅在未命名 ROW 类型参数中的另一例程的特征符,则返回错误。(当定义该模糊函数时,数据库服务器不可预料到该错误。)

INTO 子句

INTO 子句

元素 描述 限制 语法
data_structure 声明为主变量的结构 结构的单个元素必须与返回值的数据类型兼容 特定于语言
data_var 用于接收用户定义的函数返回值的变量 请参阅 数据变量 特定于语言
indicator_var 如果相应的 data_var 收到 NULL 值,则用于存储返回码的程序变量 如果相应的 data_var 可能为 NULL,则使用指示符变量 特定于语言

您必须随同 EXECUTE FUNCTION 包括 INTO 子句来指定接收用户定义的函数返回值的变量。如果该函数返回值多于一个,则这些值以您指定的顺序返回到变量列表中。

如果 EXECUTE FUNCTION 语句独立(即,它不是 DECLARE 语句的一部分且不使用 INTO 子句),则它必须执行非游标函数。 非游标函数仅返回一行值。下列示例展示 GBase 8s ESQL/C 中的 SELECT 语句:
EXEC SQL EXECUTE FUNCTION 
   cust_num(fname, lname, company_name) INTO :c_num;
1 仅限于 ESQL/C
2 GBase 8s 扩展