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  更新时间:

 

posted on   滔Roy  阅读(766)  评论(0编辑  收藏  举报

编辑推荐:
· 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月简报

导航

点击右上角即可分享
微信分享提示