外部プロシージャのデバッグについて

通常、外部プロシージャが失敗する場合は、Cプロトタイプに問題があります。

つまり、プロトタイプがPL/SQLによって内部で生成されるプロトタイプと一致していません。これは、互換性のないCデータ型を指定した場合に発生する可能性があります。たとえば、データ型がREALOUTパラメータを渡すには、float *を指定する必要があります。floatdouble *または他のCデータ型を指定すると、結果が不一致になります。

このような場合は、「外部プロシージャ・エージェントへのRPC接続が失われました。」エラーが発生します。これは、外部プロシージャでコア・ダンプが発生したため、エージェントextprocが異常終了したことを意味します。

関連項目:

Cプロトタイプ・パラメータを宣言する際にエラーの発生を回避する方法の詳細は、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。

パッケージDEBUG_EXTPROCの使用

PL/SQLでは、外部プロシージャのデバッグを支援する目的でユーティリティ・パッケージDEBUG_EXTPROCが提供されています。

このパッケージをインストールするには、PL/SQLデモ・ディレクトリにあるスクリプトdbgextp.sqlを実行します。

パッケージを使用するには、dbgextp.sqlの手順に従います。Oracle Databaseアカウントには、パッケージに対するEXECUTE権限およびCREATE LIBRARY権限が必要です。

外部プロシージャをデバッグするには、次のようにします。

  1. Windowsのタスク マネージャの「プロセス」ダイアログ・ボックスでExtProc.exeを選択します。
  2. 右クリックして、「デバッグ」を選択します。
  3. メッセージ・ウィンドウで「OK」をクリックします。

    Microsoft Visual C++のデバッグ方式でDLLをビルドした場合は、Visual C++が起動します。

  4. Visual C++ウィンドウで、「編集」「ブレークポイント」を選択します。

    PL/SQLデモ・ディレクトリのdbgextp.sqlで示されたブレーク・ポイントを使用します。

    関連項目: