加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:32:26 所属栏目:MsSql教程 来源:网络整理
导读:我看到人们在批处理SQL代码之间使用GO语句,但是AFAICS并不是强制性的(SQL Server 2008).在批处理/ SQL语句集之间使用GO语句有什么好处? 解决方法 它们并不是严格要求的 – 它们只是SQL Server Management Studio现在执行语句的说明,然后继续执行. GO不是T-SQ
我看到人们在批处理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几乎不需要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读