SQL Server:我需要在批次之间使用GO语句吗?

前端之家收集整理的这篇文章主要介绍了SQL Server:我需要在批次之间使用GO语句吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我看到人们在批处理sql代码之间使用GO语句,但是AFAICS并不是强制性的(sql Server 2008).在批处理/ sql语句集之间使用GO语句有什么好处?

解决方法

它们并不是严格要求的 – 它们只是sql Server Management Studio现在执行语句的说明,然后继续执行. GO不是T-sql关键字或任何东西 – 这只是一个在SSMS中有效的指令.

有时,你需要一个GO – 例如如果您向列中添加列,然后再次选择它,则需要在列的添加查询之间有一个GO.

例如.如果您尝试执行此操作,您将收到SSMS的错误

ALTER TABLE (soMetable) ADD DateTimeStamp DATETIME

SELECT ID,DateTimeStamp FROM (soMetable) WHERE ID > 5

结果是:

Msg 207,Level 16,State 1,Line 9
Invalid column name ‘datetimestamp’.

要点是:SSMS正在尝试一次验证整个语句,但是在SELECT语句上,它会抱怨丢失的DateTimeStamp列.

ALTER TABLE (soMetable) ADD DateTimeStamp DATETIME
GO       

SELECT ID,DateTimeStamp FROM (soMetable) WHERE ID > 5

如果你在两个语句之间放置一个GO,那么它将会工作,因为SSMS将不会提前解析和验证整个语句 – 它会做第一部分,然后只解析第二部分(在GO之后).

但除了这种情况之外,GO几乎不需要.

猜你在找的MsSQL相关文章