通常、外部プロシージャが失敗する場合は、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
権限が必要です。
外部プロシージャをデバッグするには、次のようにします。
親トピック: 外部プロシージャのデバッグについて