sql >> データベース >  >> RDS >> Oracle

pl/sqlにネストされた関数を使用するプロシージャでの例外処理

    RAISE_APPLICATION_ERROR 手順 例外が現在の例外スタック(デフォルトの動作)を置き換えるか、それに追加するかを制御する3番目のパラメーターがあります。

    したがって、渡すと TRUE 両方のメッセージが表示されます。手順からの呼び出しで:

    ...
    EXCEPTION
    WHEN OTHERS THEN
    RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
      TRUE);
    END;
    

    出力を提供します:

    BEGIN
    *
    ERROR at line 1:
    ORA-20101: Problem in loading Affected Circle data
    ORA-06512: at "SRUSER.ADD_AFFECTEDCIRCLE", line 13
    ORA-20102: Circle Code is wrong or not available
    ORA-06512: at line 2
    

    メッセージのみを表示し、スタックを操作する必要がある他のスタック情報は表示しないようにするには。 この記事 format_error_backtrace 興味のある情報を抽出しますが、残念ながら BTへのリンク パッケージは死んでいます。同じ理由のいくつかここで説明します 。基本的に、例外文字列を行に解析し、 ORA-20%で始まるものだけを表示する必要があります。 、私は思います。

    ただし、実際に重要な情報を失うことに注意してください。特に、 OTHERS ではなく、探している特定のエラーのみをトラップすることをお勧めします。 -予期しないエラーに対処し、重要なものを隠さないように、そのままにしておきます。




    1. MySQL COUNT DISTINCT

    2. PHPはこのT_Stringが好きではありません。 (構文エラー予期しないT_STRING)

    3. 外側のJOINの述語にLITERALを使用して2つの左結合がぶら下がっているORACLEは、左端のテーブルから行を除外します

    4. KEYキーワードはどういう意味ですか?