go 是SYBASE和SQL Server中用来表示事物结束,提交并确认结果,相当于ORACLE的Commit
SQL Server 实用工具将 GO 解释为应将当前的 Transact-SQL 批处理语句发送给 SQL Server 的信号。当前批处理语句是自上一 GO 命令后输入的所有语句,若是第一条 GO 命令,则是从特殊会话或脚本的开始处到这条 GO 命令之间的所有语句。
局部(用户定义)变量的作用域限制在一个批处理中,不可在 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次
相关推荐
[Microsoft Press] Microsoft SQL Server 2012 技术内幕 (英文版) [Microsoft Press] Microsoft SQL Server 2012 Internals (E-Book) ☆ 图书概要:☆ Dive deep inside the architecture of SQL Server 2012 ...
Golang 连接 SQLServer https://github.com/LukeMauldin/lodbc
通常情况睛,SQLServer... 您可能感兴趣的文章:sqlserver只有MDF文件恢复数据库的方法sqlserver 数据库日志备份和恢复步骤asp 在线备份与恢复sqlserver数据库的代码SQLserver 数据库危险存储过程删除与恢复方法SQL Serv
说明通过SQL SERVER访问远程地址出现异常,虽然本地系统已经可访问该共享文件夹 解决方案: 1、解锁 SQL SERVER “xp_cmdshell”命令 打开SQL SERVER 新建查询窗口 -- 允许配置高级选项 EXEC sp_configure 'show ...
(10)重新启动系统,SQL卸载干净,就可以重新安装sqlserver了。 好文要顶 关注我 收藏该文 标题: SQL Server 安装程序失败。 ------------------------------ SQL Server 安装程序遇到以下错误: ...
使用PowerDesigner设计SQL Server数据库
(RDBMS), and one of the most widely used RDBMS is Microsoft SQL Server. Much more than a database server, it’s a rich ecostructure with advanced analytic capabilities. Microsoft SQL Server R Services...
未及时包括在本自述文件中的任何有关 SQL Server 2005 和 SQL Server Express 的信息都将发布到 Microsoft 知识库文章 907284 中。 [顶部] 3.0 安装问题 本部分详细介绍此版本中的安装问题。 3.1 现有的 SQL ...
主要介绍了go语言通过odbc访问Sql Server数据库的方法,实例分析了Go语言通过odbc连接与查SQL Server询数据库的技巧,需要的朋友可以参考下
主要介绍了SQLSERVER 中GO的作用详解的相关资料,需要的朋友可以参考下
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries'2009年08月28日 星期五 15:00SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此...
本文主要给大家介绍的是关于SQL Server查找包含空格的表和列的相关内容,为什么会有这篇文章,是因为最近发现一个数据库中的某个表有个字段名后面包含了一个空格,这个空格引起了一些小问题,一般出现这种情况,是...
gofreetds Microsoft MSSQL 驱动器。Go 基于FreeTDS封装
Professional Microsoft SQL Server 2016 Reporting Services and Mobile Reports provides a comprehensive lesson in business intelligence (BI), operational reporting and Reporting Services architecture ...
The SQL Server client tools must be installed on your desktop computer and the SQL Server relational database server must be installed on either your desktop computer or on a remote server with ...
SQL Server with C# Klaus Elk (Author) Paperback: 146 pages 出版社: CreateSpace Independent Publishing Platform (July 5, 2018) Language: English ISBN-10: 1720358672 ISBN-13: 9781720358671 Contents 1 ...
将之前所删除的会计部门数据库加载只sql server 中 EXEC sp_attach_db @dbname='会计部门',@filename1='c:\mssql\data\会计部门.mdf' go 2.sp_rename 重命名数据库 EXEC sp_rename '会计部门','业务部门' 3....
在sqlserver 2008中创建名为 yanwen 数据库 建一张user表 代码如下 INSERT INTO [yanwen].[dbo].[users] ([name] ,[password] ,[age]) VALUES ('cyw' ,'123456' ,20) GO select * from users; 接着运行...
打开测试数据库test,并以表w01为例,将下面的SQL语句放入sql2000查询分析器中,一段一段执行即可看到效果 ---在sql2000下创建测试数据表 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo]....