一个会则不难的问题,请各位高人指导一下!

sasacat 2003-09-02 08:32:40
如果我写了一大堆各式各样的零散的SQL语句在查询分析器里,然后点一下PLAY一起执行

什么样的语句执行错误情况下就会终止不再执行下面的语句

什么样的语句执行错误情况下还会继续执行下面的语句?

最好有例子说明一下,要不纯理论也可以、、、千万不要“我觉得、、我以为、、我猜、、、”呵呵
...全文
29 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDNM 2003-09-04
  • 打赏
  • 举报
回复
大力说的对,列举不完,应该可以归类:
1、语法检查不过关,不执行当前块的下面语句,如
select * frm aa
if @@error<>0
print 1
else
print 0

2、对象不存在,不执行当前块的下面语句,如
select * from aa --aa不存在
if @@error<>0
print 1
else
print 0

3、需要注意的是,动态SQL隐藏了语法错误,如
EXEC('select * from aa')
if @@error<>0
print 1
else
print 0
会执行到print 1

select * from aa
if @@error<>0
print 1
else
print 0
不会执行到

4、GO blocks永远是有效的,出错只可能终止当前块的执行,对下一个块是没有影响的


至少可以归纳出以下结果:
未真正执行语句的错误(在真正执行前发现的错误),不执行当前块的下面语句,如词法分析错误、语法分析错误


pengdali 2003-09-03
  • 打赏
  • 举报
回复
我列举不完的。


exec('select 1*''sd''')
print 1


-------------------------

select 1*'sd'
print 1

----------------------
select cast(9*90000 as tinyint)
print 1

--------------------
exec('select * from sdfs.pubs..jobs')
print 1
sasacat 2003-09-03
  • 打赏
  • 举报
回复
大力、、、你这个“其实还有很多错误”也举个例子出来嘛、、、

分明是在吊人胃口、、
pengdali 2003-09-02
  • 打赏
  • 举报
回复
不!上面的太片面,其实还有很多错误都会导致异常中止,而不继续执行。
BenZ004 2003-09-02
  • 打赏
  • 举报
回复
什么样的语句执行错误情况下就会终止不再执行下面的语句

:一般情况下出错了,如表不存在,命令有问题等等,就不会执行下面的语句
如:select * from aa;---//aa表是不存在的
那么下面的就不会执行
select * from orders;


什么样的语句执行错误情况下还会继续执行下面的语句?

:而如果你在每一个执行SQL语句块加了go的话
如:select * from aa;---//aa表是不存在的
go
那么下面的语句还是会执行的,只不过执行后再报错
select * from orders;
go
saucer 2003-09-02
  • 打赏
  • 举报
回复
if your statements in the 查询分析器 contain GO blocks, if there is an error in one of the blocks, it will skip the statements in the remaining block and go on to execute the next block
zjcxc 元老 2003-09-02
  • 打赏
  • 举报
回复
什么样的语句执行错误情况下就会终止不再执行下面的语句

答:出错的情况下不会执行下面的语句.
例如:
select * from aa --如果表aa不存在,则不会执行下面的这句,否则会执行
select * from bb



什么样的语句执行错误情况下还会继续执行下面的语句?

答:进行了错误处理,或错误不严重的情况下会执行下面的语句
例如:
exec('select * from ab')
if @@error<>0 print 'err'
print '虽然出错了,但也会继续'





j9988 2003-09-02
  • 打赏
  • 举报
回复
我觉得、、我以为、、我猜、、、我估计....也许说不定可以:
select * from t1

if @@error>0
return

select * from t2
txlicenhe 2003-09-02
  • 打赏
  • 举报
回复
1:
if @@error <> 0
Return
2:
普通的语句出错也会继续往下执行。
pengdali 2003-09-02
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/TopicView1.asp?id=1675986

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧