今天在查询分析器里执行这样的sql,出错后面的语句不会再被执行了!
例子1:
declare @tb table(fid int identity, foldid int)
declare @tberr table(fid int identity, ErrorLineNo int)
declare @n int
set @n=0
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values ('x') ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
set @n=@n+1 ; insert @tb(foldid) values (1) ; if @@error<>0 insert @tberr (ErrorLineNo) values (@n) ;
select * from @tberr
例子2:
declare @tb table(fid int identity, foldid int)
insert @tb(foldid) values (1)
insert @tb(foldid) values (2)
insert @tb(foldid) values ('abc') --故意往int字符插入字符串
insert @tb(foldid) values (4)
insert @tb(foldid) values (5)
select * from @tb
select 888 as f1
奇怪,服务器是同一个,没有改动过查询分析器的什么设置啊。。。。。。。
这样看来,是否继续执行,是数据连接里的设置决定的了
但是这些怎么设置,都是这样。。。。。。上次是怎么都可以执行的
SET ANSI_WARNINGS Off
SET ARITHABORT off
SET ARITHIGNORE on