我有一个 pl/sql 程序,如下所述
CREATE OR REPLACE PROCEDURE add_affectedCircle
(v_affected_circle IN v_circle.circle_code%type)
IS
v_circle_id NUMBER;
BEGIN
v_circle_id := get_circleID(v_affected_circle);
INSERT INTO vf_affected_circle (affected_circle)
values (v_circle_id);
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data');
END;
/
首先,我使用函数 get_circleID 检查 vf_circle 表中 circle_code 列中的特定数据 v_affected_circle 是否可用,并返回与 circle_code 关联的 circle_id。
CREATE OR REPLACE FUNCTION get_circleID
( v_circle_code vf_circle.circle_code%TYPE)
RETURN vf_circle.circle_id%TYPE
IS
return_value vf_circle.circle_id%TYPE;
BEGIN
BEGIN
SELECT circle_id INTO return_value
FROM vf_circle
WHERE circle_code = v_circle_code;
END;
RETURN return_value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20102, 'Circle Code is wrong or not available');
END get_circleID;
/
当数据不可用于提供的数据v_affected_circle时,我想在函数get_circleID中引发用户异常(-20102,'Circle Code 错误或与记录不同')。从过程 add_affectedCircle 调用此函数
如果在将数据加载到特定表 vf_affected_circle as (-20102, 'Problem in loading Affected Circle data')时出现问题,我试图引发另一个用户异常。
现在的问题是我尝试使用错误的值运行过程add_affectedCircle,我只从过程而不是从函数中得到异常。此外,我还看到了其他我无法处理和抑制的异常。
现在我遇到这样的异常
BEGIN add_affectedCircle(69,'ODI:ASA'); END;
*
ERROR at line 1:
ORA-20102: Problem in loading Affected Circle data
ORA-06512: at "SRUSER.ADD_AFFECTEDCIRCLE", line 28
ORA-06512: at line 1
但我需要展示的是这样的
ORA-20102: Circle Code is wrong or not available
ORA-20101: Problem in loading Affected Circle data
我怎样才能做到这一点?