通常、外部プロシージャが失敗する場合は、Cプロトタイプに問題があります。
つまり、プロトタイプがPL/SQLによって内部で生成されるプロトタイプと一致していません。これは、互換性のないCデータ型を指定した場合に発生する可能性があります。たとえば、データ型がREALのOUTパラメータを渡すには、float *を指定する必要があります。float、double *または他のCデータ型を指定すると、結果が不一致になります。
このような場合は、「外部プロシージャ・エージェントへのRPC接続が失われました。」エラーが発生します。これは、外部プロシージャでコア・ダンプが発生したため、エージェントextprocが異常終了したことを意味します。
DEBUG_EXTPROCが提供されています。関連項目:
Cプロトタイプ・パラメータを宣言する際にエラーの発生を回避する方法の詳細は、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。親トピック: Windows用アプリケーションの開発
PL/SQLでは、外部プロシージャのデバッグを支援する目的でユーティリティ・パッケージDEBUG_EXTPROCが提供されています。
このパッケージをインストールするには、PL/SQLデモ・ディレクトリにあるスクリプトdbgextp.sqlを実行します。
パッケージを使用するには、dbgextp.sqlの手順に従います。Oracle Databaseアカウントには、パッケージに対するEXECUTE権限およびCREATE LIBRARY権限が必要です。
外部プロシージャをデバッグするには、次のようにします。
親トピック: 外部プロシージャのデバッグについて