批处理GO的作用

来源:互联网 发布:淘宝有卖bt种子的吗 编辑:程序博客网 时间:2024/04/30 03:36

--分析器会先分析下一个go前的所有代码,然后再执行,就算最后一步错,也会回滚到第一个语句的状态,换句话说,就是分析器会把go之间的语句作为一个事务,有错误的话会回滚到上一go之前。
--可以在分析器下运行以下代码

create table temp(myint int)
go --当这个go和下面的那个go没有的话,虽然这个语句正确,但是由于下面出错,这个表也不会创建的,
--当只有这个go,没有下面的那个go的话,表temp会被创建,即使下面的语句出错。
create function myfuntion(@int int)
returns varchar(100)
as
begin
declare @intvar varchar(100)
set @intvar = 'asdfasd'
return @intvar
end
go --没有这个go的话语句会出错,有这个go的话function会先被创建,下面的语句才能被执行

select   [sdaf]= dbo.myfuntion(2)
drop function myfuntion
drop table temp

另一个例子

create table temp(myint int)
GO
insert  tblTemp1  values ('1','2','a')
GO
create table temp2(myint int)
insert  tblTemp1  values ('1','2','a')
--insert  tblTemp  values ('1','2')
create table temp3(myint int)
GO

 

心得:

批处理如果遇到编译错误,整个批处理都不会执行;

遇到运行错误,本批处理中运行错误点前面的执行步骤会生效,运行错误点后面的语句不会执行。

本批处理块中的错误不会影响到其他批处理块的执行!

如果脚本没有一个GO语句,表示整个一段脚本块都是一个批处理块!