【问题标题】:What does the GO command do in an SQL script? [duplicate]GO 命令在 SQL 脚本中的作用是什么? [复制]
【发布时间】:2014-08-15 09:44:50
【问题描述】:

我已经阅读了有关 GO 命令的信息,但我还没有看到以下问题的明确答案。

假设我从 SSMS 运行以下命令集:

INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017882)
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017883)
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017884)
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017885)

这与以下有何不同:

INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017882)
GO
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017883)
GO
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017884)
GO
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017885)
GO

换句话说,在这种情况下,'GO' 命令真的能完成什么吗?如果有,是什么?

非常感谢, 马特

【问题讨论】:

    标签: sql-server sql-server-2008


    【解决方案1】:

    GO 命令实际上不是 SQL 命令,而是 SSMS 命令。它告诉 SSMS 将之前的命令作为批处理发送。

    所以区别在于您的第一个代码将一次发送所有代码,而第二个代码将分四批发送。

    【讨论】:

    【解决方案2】:

    GO 是一个批处理分隔符

    例如,某些操作要求它是批处理中的第一行(CREATE PROCEDURE)。如果您使用 GO,那么您可以将所有命令放在 1 个文件中

    如果它在自己的批处理中,您也可以声明相同的变量

    例子

    declare @i int = 5
    select @i
    go
    declare @i int = 5
    select @i
    go
    

    拿出去,它会爆炸

    你也可以在 GO 后面加上一个数字,它会执行多次,例如

    declare @i int = 5
    select @i
    go 4
    

    【讨论】:

      猜你喜欢
      • 2016-05-29
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 2011-08-30
      相关资源
      最近更新 更多