• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Oracle存储过程中异常处理应注意的问题

mysql 搞代码 4年前 (2022-01-09) 59次浏览 已收录 0个评论

如果主存储过程和主函数又由子过程或子函数构成,在子函数或子程序中能否包含异常处理 要依据以下原则: 第一、如果主程序和子程

如果主存储过程和主函数又由子过程或子函数构成,在子函数或子程序中能否包含异常处理

要依据以下原则:

第一、如果主程序和子程序要作为一个事务来处理,则在子程序中不能触发异常,异常要到主调程序中取处理,如果在子程序中进行异常处理,如果子程序出现异常,进行异常处理后,还会继续执行主调程序中调用的出现异常的子程序的下面的代码,这样又开始了新的事务,这样破坏了事务的一致性,,从而破坏了数据的一致性

主调程序如下:

procedure sp_procedure

is
vs_pay_year_month varchar2(6);
vs_sql varchar2(10000);

begin
sp_procedure1;

sp_procedure2;

update emp set empname=’张三’ where empid=’00001′

exception
WHEN OTHERS THEN
–发生异常,把禁止的触发器设为有效
vs_sql:=’alter table sal_t_mainper enable all triggers’;
execute immediate vs_sql;

本文来源gao!%daima.com搞$代*!码9网(

end;

子程序:

procedure sp_procedure1

is

begin

update department set dept_name=’人事部’ where deptid=’0001′

delete from department where deptid=’0002′

exception

WHEN OTHERS THEN
–发生异常,把禁止的触发器设为有效
raise_application_error(-20001, ‘删除发生错误!’);

end;

所以,在子程序中不允许处理异常,这样就会破坏数据的一致性

第二、如果主程序和子程序不作为一个事务来处理,则在子程序中可以触发异常,但这种情况很少。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle存储过程中异常处理应注意的问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址