【发布时间】:2020-02-13 03:56:29
【问题描述】:
我有 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 个过程。
2) 上面的代码运行,但它没有更新 PROC 3。
3)所有 proc 都应该在 plsql 块中运行,即使出现错误,如 contiobion。
【问题讨论】:
-
" 我已经尝试在 plsql 块中进行异常处理" 有什么问题?
-
PROC 2 没有异常处理。它终止了块
标签: oracle stored-procedures plsql plsqldeveloper