【问题标题】:DB2 Equivalent to SQL's GO?DB2 相当于 SQL 的 GO?
【发布时间】:2009-05-26 15:58:36
【问题描述】:

我编写了一个 DB2 查询来执行以下操作:

  • 创建临时表
  • 从怪物查询中选择/插入到临时表中
  • 从临时表中选择/从旧表中删除
  • 从临时表中选择/插入到不同的表中

在 MSSQL 中,我可以将命令作为一个长查询一个接一个地运行。如果做不到这一点,我可以用“GO”命令来分隔它们。当我在 DB2 中尝试此操作时,我收到错误:

DB2CLI.DLL: ERROR [42601] [IBM][CLI Driver][DB2] SQL0199N The use of the reserved
word "GO" following "" is not valid. Expected tokens may include: "". 
SQLSTATE=42601 

在临时表超出范围的情况下,我可以使用什么来分隔这些指令?

【问题讨论】:

    标签: tsql syntax db2


    【解决方案1】:

    GO 是在 MSSQL Studio 中使用的东西,我有自己的应用程序来运行 upates 并使用“GO”将语句分开。

    DB2 是否支持分号 (;)?这是许多 SQL 实现中的标准分隔符。

    【讨论】:

    • 这在 DB2 中有点复杂。通常,默认分隔符是分号,但是,在存储过程等的主体中,分隔符始终是分号,而在 CREATE PROCUEDURE/whatever 命令之后使用的分隔符必须是其他内容。您可以在调用 DB2 的环境中覆盖此定界符。传统上,\\ 用作“外部分隔符”,但您可以使用任何其他字符串。
    【解决方案2】:

    您是否尝试过只使用分号而不是“GO”?

    此链接表明分号应该适用于 DB2 - http://www.scribd.com/doc/16640/IBM-DB2

    【讨论】:

      【解决方案3】:

      我会尝试在 BEGIN 和 END 中包装您要执行的操作以设置范围。

      GO 不是 SQL 命令,它甚至不是 TSQL 命令。这是解析器的指令。我不了解 DB2,但我认为 GO 不是必需的。

      From Devx.com Tips

      虽然 GO 不是 T-SQL 语句,但它经常在 T-SQL 代码中使用,除非你知道它是什么,否则它可能是个谜。那么它的目的是什么?好吧,它会导致脚本开头的所有语句或最后一个 GO 语句(以更接近者为准)编译成一个执行计划,并独立于任何其他批处理发送到服务器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-20
        • 2012-07-10
        • 2014-02-25
        • 2019-09-19
        • 2017-04-10
        • 1970-01-01
        • 2022-01-23
        • 2012-02-18
        相关资源
        最近更新 更多