以下に示すように、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;
/
最初に、特定のデータ v_affected_circle が vf_circle テーブルの circle_code 列で利用可能であることを get_circleID 関数を使用して確認し、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、「サークル コードが間違っているか、レコードと同じではありません」)を発生させようとしています。この関数は、プロシージャ add_affectedCircle から呼び出されます
特定のテーブル vf_affected_circle に(-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
どうすればこれを達成できますか?