私は、UTL_MAILを使用して(/ ccに対して)特定のプロシージャの結果を送信する必要があるROUTINE、EMAILSおよびCOPIES列を持つテーブルEMAILSを持っています。PL/SQL例外処理のデータが見つかりません
私は、次のコードを持っている:私は電子メールがEMAILSテーブルにありませんときMYPROCがCODE1を実行したい
PROCEDURE myproc AS
NO_EMAIL_FOUND EXCEPTION;
e EMAILS%ROWTYPE;
x NUMBER;
BEGIN
--fetch data
SELECT x INTO x FROM <...>;
--fetch emails
SELECT * INTO e FROM emails WHERE routine='FRS_WEEKLY';
IF e.emails IS NULL AND e.copies IS NULL THEN
RAISE NO_EMAIL_FOUND;
END IF;
<send mail code using UTL_MAIL>;
EXCEPTION
WHEN NO_EMAIL_FOUND THEN <code1>;
WHEN NO_DATA_FOUND THEN <code2>;
WHEN OTHERS THEN NULL; --RAISE;
END myproc;
を。私の問題はNO_EMAIL_FOUND例外が発生せず、SELECT文の前にNO_DATA_FOUND例外が発生してからcode2が実行されたことです。これを避ける方法は?
Yap、解決策は、私のSELECTを内部BEGIN EXCEPTION END構造体に囲み、内部的にNO_DATA_FOUNDを捕捉し、NO_EMAIL_FOUNDを望むようにそれを伝播し、最終的に捕捉することです。 IF e.emailsがNULLの場合は、もう必要ありません。どうも。 – sbrbot