重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2250|回复: 0
打印 上一主题 下一主题

SQL Server Go 语句,不是简单的oracle 的分号.

[复制链接]
跳转到指定楼层
楼主
发表于 2017-4-7 16:15:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
go 是SYBASE和SQL Server中用来表示事物结束,提交并确认结果,相当于ORACLE的Commit
SQL Server 实用工具将 GO 解释为应将当前的 Transact-SQL 批处理语句发送给 SQL Server 的信号。当前批处理语句是自上一 GO 命令后输入的所有语句,若是第一条 GO 命令,则是从特殊会话或脚本的开始处到这条 GO 命令之间的所有语句。
局部(用户定义)变量的作用域限制在一个批处理中,不可在 GO 命令后引用。
GO代表一个批处理的结束;
你可以把每个GO之间的语句当成是一句SQL;
GO不是标准的语法,只是查询分析器为了区分多个批处理而设的分隔符而已;
具体的如下
CREATE TABLE TableName

ColumnName1 DataType,
ColumnName2 DataType

GO  
INSERT INTO TableName(ColumnName1,ColumnName2)
VALUES (Value1,Value2)
GO  
在解析和执行的时候这一篇T-SQL脚本其实是被认为是两个独立的部分,只不过他们使用同一个Session
举一个最有说服力的例子
DECLARE @Parameter1 INT  
DECLARE @Parameter2 INT
– If insert “GO” to there…
– “GO”
– Result:
– Msg 137, Level 15, State 1, Line 1
– Must declare the scalar variable “@Parameter1”.
– Msg 137, Level 15, State 1, Line 2
– Must declare the scalar variable “@Parameter2”.
– Msg 137, Level 15, State 2, Line 4
– Must declare the scalar variable “@Parameter1”.
SET @Parameter1 = 1
SET @Parameter2 = 2  
PRINT @Parameter1 + @Parameter2
GO
– Result: 3  
当你在使用的变量以前插入了一个GO,这个GO之前脚本会作为一个提交部分,而这个GO以后的部分会作为第二个部分进行提交
P.S. 这里说的提交仅是提交SQL代码,不会提交”GO”这个关键字
我们还需要留意以下特殊注意事项:
1 与GO同一行,GO前边不能包含任何SQL
2 与GO同一行,GO后边可以跟 – 注释,但是不能跟 /**/ 注释!
这个问题情况大家都不会这样写,所以遇到的几率很小,但是有一个原因引发第1个问题的情况值得大家注意×SQL脚本的文本格式,最好编码完成后检查一下文本格式选择UTF,否则可能你看到自己是换行了,但是在SQL解析的时候会认为他们在同一行,这样的情况当你越检查越会觉得SQL写得很对,但是… … 但是它始终告诉你语法错误… … 一定小心… … 昨天我就傻傻的在那里调了一天… … 彻底的郁闷了… … 呵呵
下边再说一个GO的特性,但是我们大家都不常用,或者说我们由于GO太常见而忽略掉了它的这个重要的特性,就是 – GO是可以代替我们做重复操作的!!
– INSERT TABLE TableName(Column1, Column2)
– VALUES (Value1, Value2)
– GO [Number] 这里的Number必须是正整数!  
INSERT TABLE TableName(Column1, Column2)
VALUES (Value1, Value2)
GO 100
– 在这里我们会看到GO加了100次重复操作,
– 同时在SSMS窗口智能感知的时候会用红线告诉我们语法不对
– 但是请放心执行,他100%能通过,同时必定为你运行100次
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-28 16:42 , Processed in 0.106860 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表