SQL Server Management Studio总是插入一个GO命令时,我创建一个查询使用右键单击“脚本作为”菜单。为什么?GO到底是做什么的?
当前回答
GO不是SQL关键字。
它是客户端工具(如SSMS)使用的批处理分隔符,用于将整个脚本分解为批处理
之前回答过几次…示例1
其他回答
它是一个分离查询的命令。如果你在做多次选择,它没有太大的区别,以我为例,主要用途是当我创建脚本时,你需要创建存储过程,然后授予访问或执行它们。例如:
CREATE OR ALTER PROCEDURE dbo.select1
AS
BEGIN
SET NOCOUNT ON
SELECT 1
END
EXEC dbo.select1
它将创建包含所有内容的存储过程,包括EXEC,它将在循环中结束。 GO语句会说,在结束后创建存储过程,然后执行。
CREATE OR ALTER PROCEDURE dbo.select1
AS
BEGIN
SET NOCOUNT ON
SELECT 1
END
GO
EXEC dbo.select1
Use herDatabase
GO ;
代码表示执行GO标记上面的指令。 我的默认数据库是myDatabase,所以不是使用myDatabase 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不是SQL关键字。
它是客户端工具(如SSMS)使用的批处理分隔符,用于将整个脚本分解为批处理
之前回答过几次…示例1
GO命令不是Transact-SQL语句,而是几个MS实用程序(包括SQL Server Management Studio代码编辑器)可以识别的特殊命令。
GO命令用于将SQL命令分组,并一起发送到服务器。批处理中包含的命令,即自上一个GO命令或会话开始以来的命令集,必须在逻辑上一致。例如,您不能在一个批处理中定义一个变量,然后在另一个批处理中使用它,因为变量的范围仅限于定义它的批处理。
欲了解更多信息,请参见http://msdn.microsoft.com/en-us/library/ms188037.aspx。
推荐文章
- 确定记录是否存在的最快方法
- 从现有模式生成表关系图(SQL Server)
- 我如何循环通过一组记录在SQL Server?
- 数据库和模式的区别
- 如何在SQL Server中一次更改多个列
- 如何从SQL Server Management Studio的历史记录中删除“服务器名称”项
- 外键约束可能导致循环或多条级联路径?
- 如何选择每一行的列值不是独特的
- nvarchar(max)非文本
- 在SQL Server 2008 R2中重命名数据库时出错
- 将数据复制到另一个表中
- 如何在SQL中选择表的最后一条记录?
- 修改列,添加默认约束
- 在存储过程中使用“SET XACT_ABORT ON”有什么好处?
- 如何检查SQL Server文本列是否为空?