











在 SQL Server 中,GO 并不是一个 SQL 语句,而是一个批处理(batch)分隔符,主要用于客户端工具(比如 SQL Server Management Studio、sqlcmd 工具)中。它的作用是告诉客户端工具,“到这里为止,是一个批处理的结束点,接下来开始新的批处理”。
具体作用和特点如下:
1、分隔批处理
SQL Server 会将 GO 之前的所有语句作为一个批处理提交执行,GO 之后的语句会被视为新的批处理。
例如:
SELECT * FROM dbo.Table1; GO SELECT * FROM dbo.Table2; GO
这表示两个独立的批处理,分别执行。
2、不是 T-SQL 语句
GO 不是 SQL Server 的 Transact-SQL 语言的一部分,不能把它写在存储过程或者函数里面,也不能用在纯 SQL 脚本中发送给 SQL Server 的地方(例如通过 ADO.NET 执行时)。它只在支持它的客户端工具中生效。
3、变量作用域的分界线
批处理之间变量声明是不共享的,GO 会结束当前的批处理,变量不会跨批处理传递。
DECLARE @var INT = 1; GO PRINT @var; -- 这里会报错,因为 @var 不存在了
4、可重复执行 GO 后面可以跟一个数字,表示批处理执行的次数,例如:
会执行三次打印语句。
总结:GO 是 SQL Server 客户端工具中用来分隔并执行多个批处理命令的命令,不是数据库引擎本身的关键字。它帮助将多个 SQL 语句分段执行,管理变量作用域,并支持批处理的重复执行。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。