SQL Server中的GO详解
下面的两组SQLServer语句使用go和不使用go好像没有区别。 (一) create table aa(col1 int,col2 char(10)) go create table bb(col1 int,col2 char(11)) (二) create table aa(col1 int,col2 char(10)) create table bb(col1 int,col2 char(11)) 请教高手
下面的两组SQLServer语句使用go和不使用go好像没有区别。
(一)
create table aa(col1 int,col2 char(10))
go
create table bb(col1 int,col2 char(11))
(二)
create table aa(col1 int,col2 char(10))
create table bb(col1 int,col2 char(11))
请教高手使用go与不使用go到底有什么不同阿?大家帮帮忙,谢谢了。
使用go与不使用go到底有什么不同
--使用了go 将你要执行的SQL语句分割成一部分一部分来执行Top
批处理 (参见联机丛书)
批处理是包含一个或多个 Transact-SQL 语句的组,从应用程序一次性地发送到 Microsoft? SQL Server? 执行。SQL Server 将批处理语句编译成一个可执行单元,此单元称为执行计划。执行计划中的语句每次执行一条。
编译错误(如语法错误)使执行计划无法编译,从而导致批处理中的任何语句均无法执行。
运行时错误(如算术溢出或违反约束)会产生以下两种影响之一:
大多数运行时错误将停止执行批处理中当前语句和它之后的语句。(遇到错误,后边的语句就别想执行了。)
少数运行时错误(如违反约束)仅停止执行当前语句。而继续执行批处理中其它所有语句。
在遇到运行时错误之前执行的语句不受影响。唯一的例外是如果批处理在事务中而且错误导致事务回滚。在这种情况下,回滚运行时错误之前所进行的未提交的数据修改。
假定在批处理中有 10 条语句。如果第五条语句有一个语法错误,则不执行批处理中的任何语句。如果编译了批处理,而第二条语句在执行时失败,则第一条语句的结果不受影响,因为它已经执行。
以下规则适用于批处理:
CREATE DEFAULT、CREATE PROCEDURE、CREATE RULE、CREATE TRIGGER 和 CREATE VIEW 语句不能在批处理中与其它语句组合使用。批处理必须以 CREATE 语句开始。所有跟在该批处理后的其它语句将被解释为第一个 CREATE 语句定义的一部分。
不能在同一个批处理中更改表,然后引用新列。
如果 EXECUTE 语句是批处理中的第一句,则不需要 EXECUTE 关键字。如果 EXECUTE 语句不是批处理中的第一条语句,则需要 EXECUTE 关键字。
GO (参见联机丛书)
用信号通知 Microsoft? SQL Server? 实用工具一批 Transact-SQL 语句的结束。
语法
GO
注释
GO 不是 Transact-SQL 语句;而是可为 osql 和 isql 实用工具及 SQL Server 查询分析器识别的命令。
SQL Server 实用工具将 GO 解释为应将当前的 Transact-SQL 批处理语句发送给 SQL Server 的信号。当前批处理语句是自上一 GO 命令后输入的所有语句,若是第一条 GO 命令,则是从特殊会话或脚本的开始处到这条 GO 命令之间的所有语句。SQL 查询分析器和 osql 及 isql 命令提示实用工具执行 GO 命令的方式不同。有关更多信息,请参见 osql 实用工具、isql 实用工具和 SQL 查询分析器。
GO 命令和Transact-SQL 语句不可在同一行上。但在 GO 命令行中可包含注释。
用户必须遵照使用批处理的规则。例如,在批处理中的第一条语句后执行任何存储过程必须包含 EXECUTE 关键字。局部(用户定义)变量的作用域限制在一个批处理中,不可在 GO 命令后引用。
USE pubs
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 来标识批处理的结束。
如果基于 DB-Library、ODBC 或 OLE DB APIs 的应用程序试图执行 GO 命令时会收到语法错误。SQL Server 实用工具永远不会向服务器发送 GO 命令。
权限
GO 是一个不需权限的实用工具命令。可以由任何用户执行。
在存储过程中GO语句在其尾部。
在Begin...end 中不能调用 GO
参考:中文(http://technet.microsoft.com/zh-cn/library/ms190487(SQL.90).aspx)
英文(http://msdn.microsoft.com/en-us/library/ms190487.aspx)
虽然所有的 Transact-SQL 语句在 BEGIN...END 块内都有效,但有些 Transact-SQL 语句不应分组在同一批处理或语句块中。有关详细信息,请参见 批处理和所用的各个语句。
下面的规则适用于批处理的使用:

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

HQL和SQL在Hibernate框架中进行比较:HQL(1.面向对象语法,2.数据库无关的查询,3.类型安全),而SQL直接操作数据库(1.与数据库无关的标准,2.可执行复杂查询和数据操作)。

《OracleSQL中除法运算的用法》在OracleSQL中,除法运算是常见的数学运算之一。在数据查询和处理过程中,除法运算可以帮助我们计算字段之间的比例或者得出特定数值的逻辑关系。本文将介绍OracleSQL中除法运算的用法,并提供具体的代码示例。一、OracleSQL中除法运算的两种方式在OracleSQL中,除法运算可以使用两种不同的方式进行

Oracle和DB2是两个常用的关系型数据库管理系统,它们都有自己独特的SQL语法和特点。本文将针对Oracle和DB2的SQL语法进行比较与区别,并提供具体的代码示例。数据库连接在Oracle中,使用以下语句连接数据库:CONNECTusername/password@database而在DB2中,连接数据库的语句如下:CONNECTTOdataba

MyBatis动态SQL标签解读:Set标签用法详解MyBatis是一个优秀的持久层框架,它提供了丰富的动态SQL标签,可以灵活地构建数据库操作语句。其中,Set标签是用于生成UPDATE语句中SET子句的标签,在更新操作中非常常用。本文将详细解读MyBatis中Set标签的用法,以及通过具体的代码示例来演示其功能。什么是Set标签Set标签用于MyBati

Windows操作系统是全球最流行的操作系统之一,其新版本Win11备受瞩目。在Win11系统中,管理员权限的获取是一个重要的操作,管理员权限可以让用户对系统进行更多的操作和设置。本文将详细介绍在Win11系统中如何获取管理员权限,以及如何有效地管理权限。在Win11系统中,管理员权限分为本地管理员和域管理员两种。本地管理员是指具有对本地计算机的完全管理权限

WindowsServerBackup是WindowsServer操作系统自带的一个功能,旨在帮助用户保护重要数据和系统配置,并为中小型和企业级企业提供完整的备份和恢复解决方案。只有运行Server2022及更高版本的用户才能使用这一功能。在本文中,我们将介绍如何安装、卸载或重置WindowsServerBackup。如何重置Windows服务器备份如果您的服务器备份遇到问题,备份所需时间过长,或无法访问已存储的文件,那么您可以考虑重新设置WindowsServer备份设置。要重置Windows

OracleSQL中的除法运算详解在OracleSQL中,除法运算是一种常见且重要的数学运算操作,用于计算两个数相除的结果。除法在数据库查询中经常用到,因此了解OracleSQL中的除法运算及其用法是数据库开发人员必备的技能之一。本文将详细讨论OracleSQL中除法运算的相关知识,并提供具体的代码示例供读者参考。一、OracleSQL中的除法运算

解决办法:1、检查登录用户是否具有足够的权限来访问或操作该数据库,确保该用户具有正确的权限;2、检查SQL Server服务的帐户是否具有访问指定文件或文件夹的权限,确保该帐户具有足够的权限来读取和写入该文件或文件夹;3、检查指定的数据库文件是否已被其他进程打开或锁定,尝试关闭或释放该文件,并重新运行查询;4、尝试以管理员身份运行Management Studio等等。
