内联 SQL PL
内联 SQL PL 是可在复合 SQL(内联型)语句中使用的 SQL PL 功能的子集。
复合 SQL(内联型)语句可独立执行,也可用于实现触发器、SQL 函数或 SQL 方法的主体。复合 SQL(内联型)语句处于交互方式以提供对基本 SQL 脚本语言的支持时,可通过 Db2® CLP 独立执行复合 SQL(内联型)语句。
内联 SQL PL 被描述为“内联”是因为该逻辑扩展至引用它们的 SQL 语句并使用这些 SQL 语句执行该逻辑。
- 与变量相关的语句
- DECLARE <variable>
- DECLARE <condition>
- SET 语句(赋值语句)
- 条件语句
- IF
- CASE 表达式
- 循环语句
- FOR
- WHILE
- 控制转移语句
- GOTO
- ITERATE
- LEAVE
- RETURN
- 错误管理语句
- SIGNAL
- GET DIAGNOSTICS
SQL 过程中支持的其他 SQL PL 语句在复合 SQL(内联型)语句中不受支持。游标和条件处理程序在内联 SQL PL 中不受支持,因此 RESIGNAL 语句也不受支持。
因为内联 SQL PL 语句必须在复合 SQL(内联型)语句中执行,因此 PREPARE、EXECUTE 或 EXECUTE IMMEDIATE 语句不受支持。
而且,因为 ATOMIC 必须在动态预编译或执行的复合 SQL(内联型)语句中指定,所以成员语句必须全部成功落实或无一成功落实。因此,COMMIT 和 ROLLBACK 语句也不受支持。
至于 LOOP 和 REPEAT 语句,可使用 WHILE 语句来实现等价逻辑。
带有内联 SQL PL 的独立脚本编制包括在命令行处理器 (CLP) 脚本中或直接在 CLP 提示符下执行动态预编译或执行的复合 SQL(内联型)语句。动态预编译或执行的复合 SQL(内联型)语句由关键字 BEGIN 和 END 绑定,并且必须以非缺省终止符结束。它们可包含 SQL PL 和其他 SQL 语句。
因为内联 SQL PL 语句是在引用它们的 SQL 语句中扩展的,而不是分别编译的,所以有一些小小的性能注意事项,当您规划是在 SQL 过程中以 SQL PL 实现过程逻辑还是通过在动态预编译或执行的函数、触发器或复合 SQL(编译型)语句中使用内联 SQL PL 来实现逻辑过程时应注意这些事项。