-
- EXECUTE FUNCTION 语句
使用 EXECUTE FUNCTION 语句来调用用户定义的函数或返回值的内建例程。
该语句是对 SQL 的 ANSI/ISO 标准的扩展。
语法
元素 | 描述 | 限制 | 语法 |
function | 要执行的用户定义函数的名称 | 必须在数据库中注册 | 数据库对象名 |
SPL_var | 包含要执行的 SPL 例程名称的变量 | 必须为包含现有 SPL 函数的非 NULL 名称的 CHAR、VARCHAR、NCHAR 或 NVARCHAR 数据类型 | 标识符 |
用法
EXECUTE FUNCTION 语句以参数调用用户定义函数(UDF),并指定结果要返回到哪里。
外部的 C 或 Java™ 语言函数仅返回一个值。
SPL 函数可返回一个或多个值。
您不可使用 EXECUTE FUNCTION 语句来调用不返回值的任何类型的用户定义过程。而是使用 EXECUTE PROCEDURE 或 EXECUTE ROUTINE 语句来执行过程。
您必须对用户定义函数拥有 Execute 权限。
要获取更多信息,请参阅 GRANT 语句。
在支持隐式事务的符合 ANSI/ISO 的数据库中,在缺省情况下,EXECUTE FUNCTION 不开启新的事务。然而,被调用函数内的 SQL 语句可开启新的事务。
否定函数及其伴随函数
如果返回 BOOLEAN 值的 UDF 有伴随函数,则执行该函数的任何用户必须对该函数及其伴随函数都有 Execute 权限。例如,如果函数有否定函数,则执行该函数的任何用户都必须对该函数及其否定函数 都有 Execute 权限。此外,伴随函数必须与其否定函数有相同的所有者。
要获取关于如何将 UDF 指定为其否定函数的伴随函数的信息,请参阅 NEGATOR。
EXECUTE FUNCTION 语句的工作机制
对于要随同 EXECUTE FUNCTION 语句执行的用户定义的函数(UDF),必须存在下列条件:
- 限定的函数名称或函数特征符(带有参数列表的函数名称),在名称空间或数据库内必须是唯一的。
- 在当前数据库中,该函数必须存在。
如果 EXECUTE FUNCTION 指定的参数少于用户自定义的函数预期,则未指定的参数称为丢失的。将丢失的参数初始化为它们相应的缺省值,如果已经定义了这些缺省值。在 例程参数列表 中描述为参数指定缺省值的语法。
在下列条件下,EXECUTE FUNCTION 返回错误:
- EXECUTE FUNCTION 指定的参数多于 UDF 预期。
- 丢失一个或多个参数,且没有缺省值。
- 完全限定的函数名称或函数特征符不是唯一的。
- 找不到指定名称的函数或您指定的特征符。
- EXECUTE FUNCTION 尝试调用用户定义的过程。
如果在数据库内 function 名称不唯一,则必须指定足够的 parameter_type 信息来明确该名称。要获取更多关于调用函数时如何指定参数的信息,请参阅 参数 一节。
在一些 DDL 语句中,外部 UDR 的 specific name 有效,但在调用该函数的上下文中无效。
如果 GBase 8s 不可解析模糊的函数名称,该名称的特征符不同于仅在未命名 ROW 类型参数中的另一例程的特征符,则返回错误。(当定义该模糊函数时,数据库服务器不可预料到该错误。)