A Error Output Method Better Than Sqlerrm
階層方エラーが起こった場合、根本的なエラーはSQLERRMで処理すると、わからなくなることがありえる。
DBMS_UTILITY.FORMAT_ERROR_STACKで処理すると安全である。
BEGIN RAISE NO_DATA_FOUND; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line (DBMS_UTILITY.FORMAT_ERROR_STACK); END; / ORA-01403: no data found
DBMS_UTILITYサブプログラムの要約
ACTIVE_INSTANCESプロシージャ | アクティブなインスタンスを戻します。 |
ANALYZE_DATABASEプロシージャ | データベース内にあるすべての表、クラスタおよび索引を分析します。「推奨されないサブプログラム」も参照してください。 |
ANALYZE_PART_OBJECTプロシージャ | 指定した表および索引を分析します。 |
ANALYZE_SCHEMAプロシージャ | スキーマ内にあるすべての表、クラスタおよび索引を分析します。「推奨されないサブプログラム」も参照してください。 |
CANONICALIZEプロシージャ | 指定した文字列を正規化します。 |
COMMA_TO_TABLEプロシージャ | カンマで区切られた名前のリストを、名前のPL/SQL表に変換します。 |
COMPILE_SCHEMAプロシージャ | 指定したスキーマ内にあるすべてのプロシージャ、ファンクション、パッケージおよびトリガーをコンパイルします。 |
CREATE_ALTER_TYPE_ERROR_TABLEプロシージャ | ALTER TYPE文のEXCEPTION句で使用するエラー表を作成します。 |
CURRENT_INSTANCEファンクション | 現在接続しているインスタンス番号を戻します。 |
DATA_BLOCK_ADDRESS_BLOCKファンクション | データ・ブロック・アドレスのブロック番号部分を取得します。 |
DATA_BLOCK_ADDRESS_FILEファンクション | データ・ブロック・アドレスのファイル番号部分を取得します。 |
DB_VERSIONプロシージャ | データベースに関するバージョン情報を戻します。 |
EXEC_DDL_STATEMENTプロシージャ | parse_stringでDDL文を実行します。 |
FORMAT_CALL_STACKファンクション | 現行のコール・スタックをフォーマットします。 |
FORMAT_ERROR_BACKTRACEファンクション | 現行のエラーのポイントから、エラーがキャッチされた例外ハンドラまでのバックトレースをフォーマットします。 |
FORMAT_ERROR_STACKファンクション | 現行のエラー・スタックをフォーマットします。 |
GET_CPU_TIMEファンクション | 現在のCPU時間を100分の1秒単位で戻します。 |
GET_DEPENDENCYプロシージャ | 渡されたオブジェクトの依存関係を示します。 |
GET_HASH_VALUEファンクション | 指定した文字列についてハッシュ値を計算します。 |
GET_PARAMETER_VALUEファンクション | 指定したinit.oraパラメータの値を取得します。 |
GET_TIMEファンクション | 現在の時間を100分の1秒単位で検出します。 |
INVALIDATEプロシージャ | データベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。 |
IS_CLUSTER_DATABASEファンクション | このデータベースがクラスタ・データベース・モードで実行しているかどうかを検出します。 |
MAKE_DATA_BLOCK_ADDRESSファンクション | ファイル番号とブロック番号を指定して、データ・ブロック・アドレスを作成します。 |
NAME_RESOLVEプロシージャ | 指定した名前を解決します。 |
NAME_TOKENIZEプロシージャ | 指定した名前を解析するためにパーサーをコールします。 |
PORT_STRINGファンクション | Oracleとオペレーティング・システムのバージョンを一意に識別する文字列を戻します。 |
TABLE_TO_COMMAプロシージャ | 名前のPL/SQL表を、カンマで区切られた名前のリストに変換します。 |
VALIDATEプロシージャ | 名前のPL/SQL表を、カンマで区切られた名前のリストに変換します。 |
Reference:
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19245-02/d_util.htm
また、DBMS_UTILITY.FORMAT_CALL_STACK は実行のスタックを表示できる。デバッグに役に立つ。