oracle - 执行 plsql 块中的所有过程。即使在 proc 内部有错误
问题描述
我有 3 个在 PLSQL 块中调用的过程。程序 1 内部有异常处理。程序 2 内部没有异常处理。程序 3 内部有异常处理。
当执行 plsql 块时。故意在 proc 2 中,我保持了类似条件的错误。所以 proc 1 成功运行并更新表。Proc 2 抛出一些错误由于 proc 2 中的错误,proc 3 也无法运行
所以我想绕过类似条件的错误
1)我在plsql块中尝试过异常处理
2) Pragma 自主转换。
create or replace PROCEDURE PROC1 AS ----HAS EXCEPTIONAL HADLING
BEGIN
UPDATE EMP
SET ENAME='uMANG_17'
WHERE EMPNO=7369;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
-- Ignore all exceptions and return control to calling block
NULL;
END PROC1;
create or replace PROCEDURE PROC2 AS ----DOES NOT HAVE EXCEPTIONAL HADLING
BEGIN
UPDATE EMP
SET ENAME='ROHAN_02'
WHERE HIREDATE='7499';
COMMIT;
END PROC2;
create or replace PROCEDURE PROC3 AS ----HAS EXCEPTIONAL HADLING
BEGIN
UPDATE EMP
SET ENAME='JATIN_10'
WHERE EMPNO=7521;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
-- Ignore all exceptions and return control to calling block
NULL;
END PROC3;
BEGIN
PROC1;---has update statement
PROC2;--- has error like condition
PROC3;-- has update statement
END;
/
1)所有 3 个 procs 都应该更新。
2)上面的代码运行,但它不更新PROC 3。
3)所有 proc 都应该在 plsql 块中运行,即使出现错误,例如 contiobion。
解决方案
您可以在 pl/SQL 块中处理它
BEGIN
PROC1;---has update Statement
begin
PROC2;--- has error like condition
exception
when others then
-- do something
end;
PROC3;-- has update statement
END;
/
推荐阅读
- multithreading - 与超时并行的多线程操作有时会失败,难以调试
- angular - 下拉菜单中的搜索灵敏度(ng-select,角度)
- oracle - 每行设置 new.column 的 PLSQL 触发器不起作用
- postgresql - Postgresql 基于角色的只读用户不允许从基于角色的完全访问用户读取
- c# - List 的 Remove 方法是否处理对象元素?
- swift - 为什么我只能在 Swift 中获取响应标头
- php - WordPress中的图像上传速度慢
- c - 访问 IPC_PRIVATE 生成的 key_t
- node.js - lodash 检查 object.path 是否等于值
- java - 发生错误时如何处理项目?