SQL GO命令
SQL GO命令
SQL Server提供的命令不是Transact-SQL语句,但可以由sqlcmd和osql实用程序以及SQLServerManagementStudio代码编辑器识别。这些命令可用于促进批处理和脚本的可读性和执行。
GO向SQL Server实用程序发出一批Transact-SQL语句的结束信号。
语法:
1 | GO [ count ] |
参数说明:
- count 是一个正整数。GO之前的批处理将执行指定的次数。
备注:
- GO不是Transact-SQL语句;它是sqlcmd和osql实用程序以及sqlserver management studio代码编辑器识别的命令。
- SQL Server实用工具将GO解释为应将当前批Transact-SQL语句发送到SQL Server实例的信号。当前的语句批由自上次执行后输入的所有语句组成,如果这是第一次执行,则是自特别会话或脚本开始以来输入的所有语句。
- Transact-SQL语句不能与GO命令占用同一行。但是,该行可以包含注释。
- 用户必须遵循批处理规则。例如,在批处理中第一个语句之后执行存储过程时,必须包含EXECUTE关键字。局部(用户定义)变量的范围仅限于批处理,不能在GO命令后引用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | USE AdventureWorks2012; 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或oledbapi的应用程序在尝试执行GO命令时会收到语法错误。SQL Server实用工具从不向服务器发送GO命令。
在GO之后不要使用分号作为语句结束符。
下面的示例创建两个批。第一批只包含一个useadventureworks2012语句来设置数据库上下文。其余语句使用局部变量。因此,所有局部变量声明必须分组在一个批中。这是通过在引用变量的最后一个语句之后才使用GO命令来完成的。
1 2 3 4 5 6 7 8 9 | USE AdventureWorks2012; GO DECLARE @NmbrPeople int SELECT @NmbrPeople = COUNT (*) FROM Person.Person; PRINT 'The number of people as of ' + CAST (GETDATE() AS char (20)) + ' is ' + CAST (@NmbrPeople AS char (10)); GO |
下面的示例执行批处理中的语句两次。
1 2 3 | SELECT DB_NAME(); SELECT USER_NAME(); GO 2 |
结语:在执行SQL语句时,GO相当于一个结束符或断句,要分别执行对应的语句,而不能同时执行。 --2020.09.16
创建时间:2020.09.16 更新时间:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报