【发布时间】:2017-10-11 23:40:24
【问题描述】:
我是 TSQL 新手,想知道 GO 语句的真正含义。对我来说,它似乎被扔在那里似乎适合的地方。
我猜它以某种方式告诉 sql server 运行前面的语句?如果您根本不使用它们会发生什么?有人可以举一个例子,如果我不使用GO,语句会中断。
请详细说明。
【问题讨论】:
-
T-SQL GO Statement 的可能重复项
我是 TSQL 新手,想知道 GO 语句的真正含义。对我来说,它似乎被扔在那里似乎适合的地方。
我猜它以某种方式告诉 sql server 运行前面的语句?如果您根本不使用它们会发生什么?有人可以举一个例子,如果我不使用GO,语句会中断。
请详细说明。
【问题讨论】:
它是一个批处理终止器
这会坏掉
declare @i int
set @i =5
declare @i int
set @i =6
Select @i
消息 134,级别 15,状态 1,第 5 行 变量名“@i”已被声明。变量名称在查询批处理或存储过程中必须是唯一的。
这会起作用
declare @i int
set @i =5
go
declare @i int
set @i =6
Select @i
【讨论】:
它结束了批处理。
它很少需要,而且使用得比应有的要频繁得多。一个有效的地方是在存储过程编程中,您首先检查过程是否存在,如果不存在则删除它。然后使用 go 语句结束批处理,因为 create proc 语句必须是批处理的第一个语句。
【讨论】:
'ALTER VIEW' must be the only statement in the batch。即,在 ALTER VIEW 之前和之后需要一个 GO。
顺便说一句。它实际上不是 TSQL 命令。它只是被 Microsoft DB 工具用来分隔两批命令。
事实上,如果您想在 Optionss..Batch 分离首选项设置下将其配置为 SSMS 中的不同单词。
这种区别很重要的主要地方是,如果您尝试通过代码的数据库连接(例如通过 ADO.NET)在查询中使用它们,SQL 将阻塞 GO 语句。
【讨论】: