SQL 过程语言 (SQL PL)

SQL 可用作结构化编程语言,用于编写 SQL 函数, SQL 过程, SQL 触发器和复合 (动态) 语句的例程主体。 这称为 SQL 过程语言,也称为 SQL PL。

SQL 过程和 SQL 函数统称为 SQL 例程。 SQL 过程是通过在 CREATE PROCEDURE 语句上指定 SQL 例程主体来创建的。 通过在 CREATE FUNCTION 语句上指定 SQL 例程主体来创建 SQL 函数。 通过在 CREATE TRIGGER 语句上指定 SQL 例程主体来创建 SQL 触发器。 复合 (动态) 语句是通过在复合 (动态) 语句上指定 SQL 例程主体来定义的。

还可以更改 SQL 过程。 CREATE PROCEDURE 或 CREATE FUNCTION 语句上的 OR REPLACE 选项可用于将 SQL 例程替换为新版本。 还可以在 ALTER PROCEDURE 语句或 ALTER FUNCTION 语句上指定新的 SQL 例程主体。

SQL 例程主体必须是可以是 SQL 控制语句的单个 SQL 语句。

SQL 例程主体是由数据库管理器变换为程序或服务程序的过程,函数或触发器的可执行部分。 创建 SQL 例程,触发器或 全局变量 时, SQL 将创建临时源文件 (QTEMP/QSQLSRC 和 QTEMP/QSQLT00000) ,这些文件将包含带有嵌入式 SQL 语句的 C 源代码。 当 SQL 创建这些临时源文件时,将使用记录长度 160 ,并将源语句的 CCSID 值设置为新文件的 CCSID 值。 如果这些源文件中的任何一个存在,那么如果需要与源具有相同的 CCSID ,那么将对它们进行修改。 这些源文件的记录长度应该为 160 ,否则可能会出现意外结果。 源文件成员的名称与例程,触发器或全局变量的系统名称相同。 如果指定 DBGVIEW (*SOURCE) ,那么 SQL 将在与过程,函数或触发器相同的库中的源文件 QSQDSRC 中创建例程或触发器的根源。

使用 CRTPGM 或 CRTSRVPGM 命令将 SQL 过程创建为程序 (*PGM) 或服务程序 (*SRVPGM) 对象。 SQL 函数创建为服务程序对象。 将 SQL 触发器创建为程序对象。 程序或服务程序是在作为过程,函数或触发器名称的隐式或显式限定符的库中创建的。

创建程序或服务程序时, SQL 语句 (包括大多数控制语句) 将成为程序或服务程序中的嵌入式 SQL 语句。 CALL , SIGNAL , RESIGNAL 和 GET 诊断控制语句也成为程序或服务程序中的嵌入式 SQL 语句。

在SYS例程和 SYSARMS 目录表中注册指定的过程或函数,并创建从SYS例程到程序的内部链接。 使用 SQL CALL 语句调用过程时,或者在 SQL 语句中调用函数时,将调用与例程相关联的程序。 指定的 SQL 触发器已在 SYSTRIGGERS 目录表中注册。