用户自定义的函数(UDF)是一个例程,您以 SPL 或诸如 C 或 Java™ 这样的数据库的外部语言编写该例程,且该例程将值返回到它的调用上下文。
作为表达式,UDF 有下列语法:
User-Defined Functions
您可在 SQL 语句内调用用户定义的函数。与内建的函数不一样,仅可由该函数的创建者和 DBA 以及已被授予了对该函数的 Execute 权限的用户可调用用户定义的函数。
下列示例展示某些用户定义的函数表达式。在第一个示例罗列函数参数时,省略它的 parameter 选项:
read_address(‘Miller’)
第二个示例使用 parameter 选项来指定参数值:
read_address(lastname = ‘Miller’)
当您使用 parameter 选项时,parameter 名称必须与该函数注册中对应的参数的名称相匹配。例如,前面的示例假设注册了 read_address( ) 函数如下:
CREATE FUNCTION read_address(lastname CHAR(20))
RETURNING address_t … ;
语句本地的变量(SLV)使得应用能够将值从用户定义的函数调用传递到同一 SQL 语句的另一部分。 随同用户定义的函数调用来使用 SLV
1、为用户定义的函数写一个或多个 OUT 参数(对于以 Java 或以 SPL 语言编写的 UDR,为 INOUT 参数)。
2、当您注册用户定义的函数时,请在每一 OUT 参数之前指定 OUT 关键字,并在每一 INOUT 参数之前指定 INOUT 关键字。
3、请在以每一 OUT 和 INOUT 参数调用用户定义的函数的函数表达式中声明 SLV。 必须在 WHERE 内进行用户定义的函数的调用。
4、请在 SQL 语句内使用该用户定义的函数已初始化了的 SLV。 在用户定义的函数的调用已初始化了 SLV 之后,您可在其中声明了 SLV 的同一 SQL 语句的其他部分中使用此值,包括其 WHERE 子句包括该 SLV 声明的查询的子查询。
除了使用 SLV 来从 OUT 或 INOUT 参数检索值之外,您还可使用本地变量或 SPL 例程的参数来从有 OUT 或 INOUT 参数的 SPL 或 C 例程检索值。