4345f72e97e5ce0bcf8da6411dab2a73.png

如果主存储过程和主函数由子过程或子函数组成,则子函数或子程序是否可以包含异常处理

基于以下原则:

首先oracle 过程 异常处理,如果将主程序和子程序作为一个事务处理,则不能在子程序中触发异常. 异常应在主调用程序中处理. 如果在子程序中处理了异常,如程序出现异常,则在异常处理之后,将继续执行在调用程序中调用的异常子程序的以下代码,从而启动新的事务,这破坏了事务的一致性,从而破坏了数据的一致性

主要调用过程如下:

过程sp_procedure

115ad8fc74d3bcbcd367230119ed3a11.jpg

vs_pay_year_month varchar2(6);

vs_sql varchar2(10000);

开始

sp_procedure1;

sp_procedure2;

update emp set empname ='张三'其中empid ='00001'

06fdb498ee98a2d2405c4d0c0dcf9281.png

例外

何时有其他人

-发生异常,将禁止的触发器设置为有效

vs_sql: ='更改表sal_t_mainper启用所有触发器';

立即执行vs_sql;

end;

a8671a1e70e0f9b158d9a9d083539842.png

子例程:

过程sp_procedure1

开始

更新部门集dept_name ='人事部门',其中deptid ='0001'

从部门deptid ='0002'删除

img_2_2409648583D3163582901_27.jpg

例外

何时有其他人

-发生异常,将禁止的触发器设置为有效

raise_application_error(-20001,“删除时发生错误!”);

end;

因此oracle 过程 异常处理,不允许在子程序中处理异常,这将破坏数据的一致性

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

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-169001-1.html

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐