【发布时间】:2019-12-21 17:57:29
【问题描述】:
我有以下三个程序
CREATE OR REPLACE PROCEDURE p1(p_a IN NUMBER)
AS
BEGIN
dbms_output.put_line(p_a || 'is a number');
END;
/
CREATE OR REPLACE PROCEDURE p2(p_b IN VARCHAR2)
AS
BEGIN
dbms_output.put_line(p_b || 'is a word');
END;
/
CREATE OR REPLACE PROCEDURE p3(p_c IN DATE)
AS
BEGIN
dbms_output.put_line(p_c || 'is a date');
END;
/
上述过程在逻辑上没有关联,但我想写一个匿名块,其中过程 p1 运行成功,过程 p2 有一些错误意味着过程 p3 将无法正常运行。但是我想写一个匿名块,即使过程 p2 失败,它也会使过程 p3 运行。
如何写anonymous block?
我们可以去DBMS_SCHEDULER吗?
【问题讨论】:
-
异常块
-
@LukaszSzozda 我想用匿名块写。
-
匿名块也可以有 EXECPTION 块。这就是重点
-
我知道有异常块的过程方法会处理错误。但我想要一个匿名块,例如
p1 fails p2 and p3 have to run或p2 fails p1 and p3 should run或明智的反之亦然 -
不会有问题吧?只需用匿名块包装每个 SP 调用,但有异常?如果失败,它不会使主要匿名块失败并继续运行