批处理命令

向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号。

语法

GO

备注

GO 不是 Transact-SQL 语句；它是 sqlcmd 和 osql 实用工具以及 SQL Server Management Studio 代码编辑器识别的命令。

SQL Server 实用工具将 GO 解释为应该向 SQL Server 实例发送当前批 Transact-SQL 语句的信号。当前批语句由上一 GO 命令后输入的所有语句组成，如果是第一条 GO 命令，则由即席会话或脚本开始后输入的所有语句组成。

GO 命令和 Transact-SQL 语句不能在同一行中。但在 GO 命令行中可包含注释。

用户必须遵照使用批处理的规则。例如，在批处理中的第一条语句后执行任何存储过程必须包含 EXECUTE 关键字。局部（用户定义）变量的作用域限制在一个批处理中，不可在 GO 命令后引用。

USE AdventureWorks;

GO

DECLARE @MyMsg VARCHAR(50)

SELECT @MyMsg = 'Hello, World.'

GO -- @MyMsg is not valid after this GO ends the batch.

-- Yields an error because @MyMsg not declared in this batch.

PRINT @MyMsg

GO

SELECT @@VERSION;

-- Yields an error: Must be EXEC sp_who if not first statement in

-- batch.

sp_who

GO

SQL Server 应用程序可以将多个 Transact-SQL 语句作为一个批发送到 SQL Server 的实例来执行。然后，该批中的语句被编译成一个执行计划。程序员在 SQL Server 实用工具中执行特殊语句，或生成 Transact-SQL 语句的脚本在 SQL Server 实用工具中运行时，使用 GO 作为批结束的信号。

如果基于 ODBC 或 OLE DB API 的应用程序试图执行 GO 命令，会收到语法错误。SQL Server 实用工具从不向服务器发送 GO 命令。