批处理 是作为一个逻辑单元的T-SQL语句。如果一条语句不能通过语法分析,那么不会 运行任何语句。如果一条语句在运行时失败,那么产生错误的语句之前的语句都已经执行了。
需要将一个批处理的语句分成多个批处理执行,可以使用Go语句
Go语句的特点:
- Go语句必须自成一行,只有注释可以在同一行上。
- 他使得自脚本开始部分或者最近一个GO语句之后的所有语句编译成一个处理计划。(这样批处理计划之间不会因为另一个批处理处理失败影响另外一个批处理)
- GO语句不是T-SQL命令,而是由各种SQL-Server命令实用程序识别的命令。
批处理之间不会互相影响
select 1/0 go declare @ic nvarchar(100) set @ic='测试批处理会不会有影响,正常情况应该是输出本段文字' print @ic
输出内容如下
消息 8134,级别 16,状态 1,第 3 行 遇到以零作除数错误。 测试批处理会不会有影响,正常情况应该是输出本段文字
批处理过程中的错误
批处理过程的错误主要有两类
1、语法错误
如果查询分析器发现一个语法错误,那么批处理的处理过程会被立即取消。因为语法检查发生在批处理编译或者执行之前,所以在语法检查期间的一个失败意味着还没有批处理被执行-不管语法错误发生在批处理中的什么位置。
2、运行时错误
运行时错误的工作方式有很大不同,因为任何在遇到运行时错误之前执行的语句已经完成了,所以除非是未提交事务的一部分,否则这些语句所做的任何事情都已经是现实了。 一般而言,运行时错误将终止从错误发生的地方到此批处理末端的批处理的执行。下一个批处理不影响。
何时使用批处理
1.要求有自己的批处理的语句
有一些命令必须有他们自己的批处理。
- CREATE DEFAULT
- CREATE PROCEDURE
- CREATE RULE
- CREATE TRIGGER
- CREATE VIEW
如果想在单个脚本中将这些语句中的任意一个和其他语句进行组合,那么需要通过使用GO语句将他们分散到各自的批处理中。
2、使用批处理建立优先权
语句有执行顺序要求