2

我已经阅读了有关 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' 命令真的能完成任何事情吗?如果是这样,是什么?

非常感谢,马特

4

2 回答 2

3

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

所以不同之处在于您的第一个代码将一次发送所有代码,而第二个代码将分四批发送。

于 2013-07-01T19:14:38.407 回答
3

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
于 2013-07-01T19:15:19.223 回答