SPL 函数是用 SPL 编写的 UDR ,可返回一个或多个值。要编写并注册 SPL 函数,请使用 CREATE FUNCTION 语句。在 CREATE FUNCTION 和 END FUNCTION 关键字之间嵌入适当的 SQL 和 SPL 语句。还可以将 DOCUMENT 和 WITH FILE IN 选项放在该函数后面。
分析 SPL 函数,(尽可能)优化函数f,并以可执行文件的形式存储在系统目录表中。SPL 函数的主体存储在 sysprocbody 系统目录表中。关于该函数的其它信息存储在其它系统目录表中,包括 sysprocedures 、sysprocplan 和 sysprocauth。有关这些系统目录表的更多信息,请参阅 GBase 8s SQL 参考指南。
CREATE FUNCTION update_by_pct ( pct INT, pid CHAR(10)) RETURNING INT; UPDATE inventory SET price = price + price * (pct/100) WHERE part_id = pid; return (select price from inventory where part_id = pid); END FUNCTION DOCUMENT "USAGE: Update a price by a percentage", "Enter an integer percentage from 1 - 100", "and a part id number" WITH LISTING IN '/tmp/warn_file';
有关如何编写 SPL 函数的更多信息,请参阅 GBase 8s SQL 教程指南 中关于 SPL 的章节。
另见 SPL 例程中的事务 一节。
您可以在 SPL 函数中包含有效的 SQL 或 SPL 语言语句。但是,请参阅 其它语法段 中的以下各节,这些节描述了 SPL 例程中 SQL 和 SPL 语句上的限制:SPL 语句的子集在语句块中有效 、 SQL 语句在 SPL 语句块中有效 和 在数据操纵语句中 SPL 例程的限制 。