我是TSQL的新手,想知道GO
语句的实际含义。对我来说,它似乎只是随意插入的。
我猜它某种程度上告诉SQL Server运行前面的语句?如果根本不使用它们会发生什么?能否举一个没有GO
语句就会出错的语句示例。
请详细说明。
它是批处理的终止符
这会导致出错
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
它结束了批处理。
它很少被需要,但却比应该使用得更频繁。一个有效的场景是在存储过程编程中,您首先检查存储过程是否存在,如果不存在,则删除它。然后,您使用go语句结束批处理,因为create proc语句必须是批处理的第一条语句。
'ALTER VIEW'必须是批处理中唯一的语句。
即,在ALTER VIEW之前和之后都需要一个 GO
。 - Don Cheadle顺便说一下,它实际上不是TSQL命令。它只是Microsoft数据库工具用来分隔两个命令批处理的标识。
事实上,如果你想在SSMS中配置一个不同的单词,你可以在选项. .Batch分离首选项设置中进行。
这种区别的主要意义在于,如果你尝试通过代码(例如通过ADO.NET)从数据库连接中使用GO语句,则SQL会阻止其运行。