【问题标题】:Single line GO(Batch) statement giving error in SQL Server?单行 GO(Batch) 语句在 SQL Server 中给出错误?
【发布时间】:2014-07-30 18:00:13
【问题描述】:

我有一个问题。我正在临时创建以下程序。

当我以以下格式执行它时,它工作正常:

CREATE PROCEDURE Get_TableList_By_Name
@Proc_Name VARCHAR(255)
AS
BEGIN
    SELECT * FROM sys.tables WHERE name LIKE '%' + @Proc_Name + '%'
END 
GO
EXEC Get_TableList_By_Name 'norway'
GO
DROP PROCEDURE Get_TableList_By_Name 
GO

但是当我以以下格式执行相同的 SQL 时,它会给出错误提示:“'GO' 附近的语法不正确。”

CREATE PROCEDURE Get_TableList_By_Name @Proc_Name VARCHAR(255) AS BEGIN SELECT * FROM sys.tables WHERE name LIKE '%' + @Proc_Name + '%' END GO EXEC Get_TableList_By_Name 'norway' GO DROP PROCEDURE Get_TableList_By_Name GO

CREATE PROCEDURE Get_TableList_By_Name @Proc_Name VARCHAR(255) AS BEGIN SELECT * FROM sys.tables WHERE name LIKE '%' + @Proc_Name + '%' END GO 1 EXEC Get_TableList_By_Name 'norway' GO 1 DROP PROCEDURE Get_TableList_By_Name GO 1

如何在单行中用 GO 语句编写相同的 SQL? 可能吗?如果不是那为什么?

谢谢, 维沙尔

【问题讨论】:

    标签: sql sql-server sql-server-2008 tsql


    【解决方案1】:

    来自GO (Transact-SQL)

    Transact-SQL 语句不能与 GO 命令占用同一行。 但是,该行可以包含 cmets。

    所以 Go 需要独行,除了 cmets。

    【讨论】:

    • 感谢 Astander。那么单行就没有办法写了吗?
    • 同一行的GO后面也不能有注释...
    【解决方案2】:

    'GO' 不是 SQL 命令。它是工具识别的批处理终止器 如查询分析器、SSMS、SQLCMD 等。这些工具通常需要 GO 在单独的行上,并将前面的 SQL 语句作为批处理发送 遇到 GO 时到 SQL Server

    GO 语句不是 T-SQL 命令,必须换行。 T-SQL 语句不能与 GO 占用同一行。 GO 语句可以包含 cmets。

    【讨论】:

      【解决方案3】:

      你可以执行这个:

      EXEC   SP_COMMAND 1,2;
      EXEC   SP_COMMAND 2,2;
      EXEC   SP_COMMAND 3,2;
      

      设置 EXEC Bebore sp 和 ';'结束语句 然后 选择所有代码 (SSMS) 并按 f5 o 执行所有其他网络的代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多