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

アプリケーションによって発生したすべての「エラーメッセージ」を追跡、識別、および報告するための効果的な方法は何ですか?

    独自のアプリケーションによって発生したエラーの場合、一般的な解決策は、次のようなエラーメッセージのテーブルを用意することです。

    create table errors
        ( error_no integer primary key
        , error_text varchar2(200)
        , error_cause varchar2(4000)
        , error_action varchar2(4000)
        );
    

    一般的なエントリは次のとおりです。

    insert into errors (error_no, error_text, error_cause, error_action)
    values (479, 'End date cannot be earlier than start date',
            'A start date and an end date were entered where the end date was before the start date, which is not allowed.',
            'Correct the start and end dates and retry.'
           );
    

    次に、コードで次のような例外を処理します。

    if p_start_date > p_end_date then
        error_pkg.raise_error (479);
    end if;
    

    パッケージは次のようになります:

    procedure raise_error (p_error_no integer)
    is
        l_text errors.error_text%type;
    begin
        select error_text into l_text
        from   errors
        where  error_no = p_error_no;
        raise_application_error(-20001, l_text);
    end;
    

    エンドユーザーには次のようなものが表示されます:

    ERROR 479: End date cannot be earlier than start date
    

    次に、これを調べて、原因とアクションの詳細を取得できます。

    より高度なバージョンでは、次のようなエラーテキストでプレースホルダーを使用して、メッセージにデータ値を表示できます。

    insert into errors (error_no, error_text, error_cause, error_action)
    values (456, 'Invalid action code: [1]',
            'An invalid action was specified', 'Correct the action code and retry.'
           );
    
    error_pkg.raise_error (456, p_act_code);
    


    1. 累積合計をリセットしますか?

    2. PHP接続に失敗しました:SQLSTATE[HY000][2002]接続が拒否されました

    3. SQLiteデータベースをバックアップする

    4. MySQLでのストアドプロシージャとトリガー