TSQL中的GO语句是什么意思?

20

我是TSQL的新手,想知道GO语句的实际含义。对我来说,它似乎只是随意插入的。

我猜它某种程度上告诉SQL Server运行前面的语句?如果根本不使用它们会发生什么?能否举一个没有GO语句就会出错的语句示例。

请详细说明。


可能是T-SQL GO语句的重复问题。 - Thomas
3个回答

14

它是批处理的终止符

这会导致出错

declare @i int
set @i =5

declare @i int
set @i =6

Select @i

Msg 134, Level 15, State 1, Line 5 变量名'@i'已经被声明。变量名必须在查询批处理或存储过程内唯一。

这将起作用。

declare @i int
set @i =5

go
declare @i int
set @i =6

Select @i

10

它结束了批处理。

它很少被需要,但却比应该使用得更频繁。一个有效的场景是在存储过程编程中,您首先检查存储过程是否存在,如果不存在,则删除它。然后,您使用go语句结束批处理,因为create proc语句必须是批处理的第一条语句。


1
另一个有效且常见的位置是在您的TSQL中使用ALTER VIEW命令。 'ALTER VIEW'必须是批处理中唯一的语句。 即,在ALTER VIEW之前和之后都需要一个 GO - Don Cheadle

6

顺便说一下,它实际上不是TSQL命令。它只是Microsoft数据库工具用来分隔两个命令批处理的标识。

事实上,如果你想在SSMS中配置一个不同的单词,你可以在选项. .Batch分离首选项设置中进行。

这种区别的主要意义在于,如果你尝试通过代码(例如通过ADO.NET)从数据库连接中使用GO语句,则SQL会阻止其运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接