DB2-如何一个接一个地运行多个匿名SQL块?

时间:2018-09-05 12:16:37

标签: sql db2

  1. 我可以在END之后使用分号(;)运行多个块(BEGIN ... END)吗?
  2. 如果我在所有块中使用相同的变量,我是否必须在每个块中或仅在第一个块中声明变量?

1 个答案:

答案 0 :(得分:0)

这取决于运行程序的块以及您的工具集。

此答案与Db2命令行处理器(Db2 CLP)有关。它也可能与允许您执行多个块并允许使用替代语句定界符的GUI工具有关。

对于Db2-CLP,您可以在一个脚本中连续运行多个匿名块(一个接一个),前提是您使用替代语句定界符。这使Db2命令处理器(如果这是您的脚本运行的对象)区分块内的语句,该语句不同于块的末尾和下一个块的开始。 (仅靠BEGIN和END还不够。)

示例脚本:

--#SET TERMINATOR @
begin
  statement1;
  statement2; -- etc.
end@

begin
  statement3;
  statement4;
end@

如果要在块之间共享变量,则最好使用GLOBAL变量,否则范围规则将阻止它。如果您有很多全局变量,那么它们对于重新启动,清理和调试可能会很混乱。考虑改用会话表(声明的全局临时表..with replace)。如果代码可能会运行数年,请从长期维护的角度考虑代码的结构。