请问:在存储过程中使用RaiseError返回一个错误信息后,还有必要使用Return吗?

littlefat 2004-07-13 08:47:34
如:
IF 。。。
RaiseError('abc',16,1)
Return(1) --多余吗?
End
...全文
195 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
stone_lin 2004-07-13
写一个测试不就知道了吗?

回复
zheninchangjiang 2004-07-13
1.事实是这样的
2.继续执行吧
回复
littlefat 2004-07-13
再罗嗦一下:
①是不是RaiseError后,存储过程并不直接返回,而一定要碰到显式的Return或者存储过程自然结束时再返回?
②如果存储过程存在嵌套调用,例如在存储过程A中调用了存储过程B,在存储过程B中执行了RaiseError和Retrun后,是会直接结束存储过程B的执行并返回到存储过程A中的调用处继续执行?还是存储过程B会终止执行并直接返回到应用程序而不返回到A存储过程中继续执行呢?

小的愚钝,原来不是学计算机的,基础不够扎实,偶大部分关于SQL的知识都是从本版学到的,在此先谢谢各位老大先。。。。



回复
zheninchangjiang 2004-07-13
declare @r int
select @r=exec anotherprocedure
if @r=0 --这个值可以是任何在另一存储过程发生错误用return 返回的值,一般情况习惯用1表示成功,0表示错误
return
回复
zheninchangjiang 2004-07-13
declare @r int
select @r=exec anotherprocedure
if @r=0
return
没有测试,以前看到好象能这样用,如果不行也可以借助一个output参数来完成
回复
zheninchangjiang 2004-07-13
不多余
回复
tomatowitch 2004-07-13
②是会继续执行下去的。
现在我想借问一下:②这样的情况 我发现b运行出错后,还是会返回到存储过程A中的调用处继续执行。怎么样才能让b运行出错后 a调用处后面的语句也不执行了 谢谢
回复
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2004-07-13 08:47
社区公告
暂无公告