如果主存储过程和主函数由子过程或子函数组成,则子函数或子程序是否可以包含异常处理
基于以下原则:
首先oracle 过程 异常处理,如果将主程序和子程序作为一个事务处理,则不能在子程序中触发异常. 异常应在主调用程序中处理. 如果在子程序中处理了异常,如程序出现异常,则在异常处理之后,将继续执行在调用程序中调用的异常子程序的以下代码,从而启动新的事务,这破坏了事务的一致性,从而破坏了数据的一致性
主要调用过程如下:
过程sp_procedure
是
vs_pay_year_month varchar2(6);
vs_sql varchar2(10000);
开始
sp_procedure1;
sp_procedure2;
update emp set empname ='张三'其中empid ='00001'
例外
何时有其他人
-发生异常,将禁止的触发器设置为有效
vs_sql: ='更改表sal_t_mainper启用所有触发器';
立即执行vs_sql;
end;
子例程:
过程sp_procedure1
是
开始
更新部门集dept_name ='人事部门',其中deptid ='0001'
从部门deptid ='0002'删除
例外
何时有其他人
-发生异常,将禁止的触发器设置为有效
raise_application_error(-20001,“删除时发生错误!”);
end;
因此oracle 过程 异常处理,不允许在子程序中处理异常,这将破坏数据的一致性
第二,如果主程序和子程序不作为一个事务处理,则可以在子程序中触发异常,但这很少发生.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-169001-1.html