web-dev-qa-db-ja.com

Oracle PL / SQLの作成または置換ストアドプロシージャで例外をキャッチして返す(または出力する)方法

PL/SQLストアドプロシージャがあり、その中でいくつかの更新を実行し、例外をキャプチャして出力パラメーターに返します。簡単にするために、以下のコードブロックでは、例外コードとエラーメッセージをコンソールに出力しています。ただし、以下のコードブロックは機能しません(「見つかりました/予期しています」という構文エラーが発生しています)

    CREATE OR REPLACE PROCEDURE DBP.TESTING_SP AS 
    DECLARE
    v_code  NUMBER;
    v_errm  VARCHAR2(64);
    BEGIN
    UPDATE PS_NE_PHONE_TBL SET NE_PHONE_TYPE = 'TEST' WHERE NEMPLID_TBL = 'N14924';

    EXCEPTION
    WHEN OTHERS THEN
    v_code := SQLCODE;
    v_errm := SUBSTR(SQLERRM, 1, 64);
    DBMS_OUTPUT.PUT_LINE (v_code || ' ' || v_errm);
    END TESTING_SP;
    /

私がやろうとしていることの正しい構文は何ですか?

あるフォーラムで読んだ

「作成または置換構文を使用する場合、宣言は使用できません。宣言は名前のない匿名ブロックに対してのみです。したがって、1行目を削除して匿名ブロックを作成するか、2行目を削除して名前付きプロシージャを作成してください。」

しかし、無名ブロックを作成する方法や、名前付きプロシージャを作成して、やりたいことを実行する方法がわかりません(それが実際に「解決策」である場合)。誰かが手を貸してくれませんか?

11
n00b

DECLAREステートメントを削除するだけです。

6
DCookie