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

littlefat 2004-07-13 08:47:34
如:
IF 。。。
RaiseError('abc',16,1)
Return(1) --多余吗?
End
...全文
316 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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调用处后面的语句也不执行了 谢谢

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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