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

エラーが発生した場合のPL/SQLでの行番号、プロシージャ名の確認方法

    私は多くの研究、頭を叩いたり歯を食いしばったりした後、このパターンに出くわしました:

    CREATE OR REPLACE PACKAGE BODY my_schema.package_name
    IS
    
      PROCEDURE foo
      IS
      BEGIN
        -- Call stored procedures/functions that throw unhandled exceptions
      EXCEPTION
        WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE('ERROR! - '
            || DBMS_UTILITY.FORMAT_ERROR_STACK
            || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
      END foo;
    
    END;
    

    DBMS_UTILITY.FORMAT_ERROR_STACK 関数はエラーコードとメッセージ、およびDBMS_UTILITY.FORMAT_ERROR_BACKTRACEを提供しているようです 少なくともOracle10gの行番号とストアドプロシージャ名を備えた、正直なスタックトレースを提供しているようです。

    これらの関数がOracle9iで使用できるかどうかはわかりません。 Oracle 10gでもこの種の情報はあまり見つかりませんでした。9iはかなり古いので、少なくともこの回答を投稿すると思いました(つまり、10gです)。



    1. sqlalchemyセッションでのオブジェクトの更新について

    2. 表の既存の行を使用してOracleのデータ型を変更する方法

    3. PHPセッションがAJAXと競合する

    4. PHPスタートアップ:ダイナミックライブラリ'C:\ xampp \ php \ ext\php_oci8_12c.dll'を読み込めません-指定されたプロシージャが見つかりませんでした