内联 SQL PL

内联 SQL PL 是可在复合 SQL(内联型)语句中使用的 SQL PL 功能的子集。

复合 SQL(内联型)语句可独立执行,也可用于实现触发器、SQL 函数或 SQL 方法的主体。复合 SQL(内联型)语句处于交互方式以提供对基本 SQL 脚本语言的支持时,可通过 Db2® CLP 独立执行复合 SQL(内联型)语句。

内联 SQL PL 被描述为“内联”是因为该逻辑扩展至引用它们的 SQL 语句并使用这些 SQL 语句执行该逻辑。

以下 SQL PL 语句被视为内联 SQL PL 语句集的一部分:
  • 与变量相关的语句
    • 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 来实现逻辑过程时应注意这些事项。