SQL Server Management Studio总是插入一个GO命令时,我创建一个查询使用右键单击“脚本作为”菜单。为什么?GO到底是做什么的?
当前回答
只是为了添加到现有的答案,当你创建视图时,你必须使用go将这些命令分成批量,否则你会得到错误'CREATE VIEW'必须是批处理中唯一的语句。例如,如果没有go,您将无法执行下面的sql脚本
create view MyView1 as
select Id,Name from table1
go
create view MyView2 as
select Id,Name from table1
go
select * from MyView1
select * from MyView2
其他回答
它是一个批处理终止符,但是你可以将它更改为任何你想要的
只是为了添加到现有的答案,当你创建视图时,你必须使用go将这些命令分成批量,否则你会得到错误'CREATE VIEW'必须是批处理中唯一的语句。例如,如果没有go,您将无法执行下面的sql脚本
create view MyView1 as
select Id,Name from table1
go
create view MyView2 as
select Id,Name from table1
go
select * from MyView1
select * from MyView2
GO意思是让SQL重复这个你在它后面加上的数字。就像用英语说;“嘿,去那里3次。”尝试下面的SQL和结果将呈现表3次。
SELECT * FROM Table
GO 3
我还没有看到的一个用法是错误恢复。 由于一次只运行两个go之间的命令,这意味着一个命令中的编译错误可以与其他命令分开。通常情况下,批处理中的任何编译错误都会导致整个程序无法执行。
exec do.Something
GO
sel from table
print 'here'
GO
print 'there'
在上面的例子中,'here'将不会被打印出来,因为'sel'语句中存在错误。
现在,在中间添加一个GO:
exec do.Something
GO
sel from table
GO
print 'here'
GO
print 'there'
像以前一样,'sel'得到一个错误,但'here'得到输出。
GO命令不是Transact-SQL语句,而是几个MS实用程序(包括SQL Server Management Studio代码编辑器)可以识别的特殊命令。
GO命令用于将SQL命令分组,并一起发送到服务器。批处理中包含的命令,即自上一个GO命令或会话开始以来的命令集,必须在逻辑上一致。例如,您不能在一个批处理中定义一个变量,然后在另一个批处理中使用它,因为变量的范围仅限于定义它的批处理。
欲了解更多信息,请参见http://msdn.microsoft.com/en-us/library/ms188037.aspx。
推荐文章
- 在SQL server查询中将NULL替换为0
- 在SQL中修改表的模式名
- 如何得到累计和
- 如何在SQL Server 2005的一条语句中更新两个表?
- 如何创建临时表与SELECT * INTO tempTable从CTE查询
- 在SQL Server的选择语句中使用带TOP的变量,而不是动态的
- SQL变量保存整数列表
- 在SQL中转换月号到月名函数
- 改变一个varchar列的最大长度?
- 如何在SQL中从DateTime格式获取时间?
- 暂时关闭约束(MS SQL)
- WHERE子句中的IF子句
- 如何在SSMS中从ntext或nvarchar(max)查看所有文本?
- 创建表如果在SQL Server中不存在
- MSSQL错误“底层提供者在打开时失败”