T-SQL中GO关键字

go 是SYBASE和SQL Server中用来表示事务结束,提交并确认结果,相当于ORACLE的Commit

SQL Server 实用工具将 GO 解释为应将当前的 Transact-SQL 批处理语句发送给 SQL Server 的信号。当前批处理语句是自上一 GO 命令后输入的所有语句,若是第一条 GO 命令,则是从特殊会话或脚本的开始处到这条 GO 命令之间的所有语句。

局部(用户定义)变量的作用域限制在一个批处理中,不可在 GO 命令后引用。

GO代表一个批处理的结束;
你可以把每个GO之间的语句当成是一句SQL;
GO不是标准的语法,只是查询分析器为了区分多个批处理而设的分隔符而已;

具体的如下

  
  
  1. CREATE TABLE TableName  
  2. (  
  3.   ColumnName1 DataType,  
  4.   ColumnName2 DataType  
  5. )  
  6. GO  
  7.  
  8. INSERT INTO TableName(ColumnName1,ColumnName2)  
  9. VALUES (Value1,Value2)  
  10. GO 

在解析和执行的时候这一篇T-SQL脚本其实是被认为是两个独立的部分,只不过他们使用同一个Session

举一个最有说服力的例子

  
  
  1. DECLARE @Parameter1 INT 
  2. DECLARE @Parameter2 INT 
  3.  
  4. SET @Parameter1 = 1  
  5. SET @Parameter2 = 2  
  6.  
  7. PRINT @Parameter1 + @Parameter2  
  8. GO  
  9. -- Result: 3 

当你在使用的变量以前插入了一个GO,这个GO之前脚本会作为一个提交部分,而这个GO以后的部分会作为第二个部分进行提交

P.S. 这里说的提交仅是提交SQL代码,不会提交"GO"这个关键字

我们还需要留意以下特殊注意事项:

1 与GO同一行,GO前边不能包含任何SQL

2 与GO同一行,GO后边可以跟 -- 注释,但是不能跟 /**/ 注释!

下边再说一个GO的特性,但是我们大家都不常用,或者说我们由于GO太常见而忽略掉了它的这个重要的特性,就是 -- GO是可以代替我们做重复操作的!!

  
  
  1. -- INSERT TABLE TableName(Column1, Column2)  
  2. -- VALUES (Value1, Value2)  
  3. -- GO [Number] 这里的Number必须是正整数!  
  4.  
  5. INSERT TABLE TableName(Column1, Column2)  
  6. VALUES (Value1, Value2)  
  7. GO 100  
  8. -- 在这里我们会看到GO加了100次重复操作,  
  9. -- 同时在SSMS窗口智能感知的时候会用红线告诉我们语法不对  
  10. -- 但是请放心执行,他100%能通过,同时必定为你运行100次  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值