表20-1は、この項で説明しているCのOCI外部プロシージャ関数を示しています。
表20-1 外部プロシージャ関数
| 関数 | 用途 |
|---|---|
|
|
外部プロシージャの継続時間にメモリーを割り当てます。 |
|
|
OCI環境ハンドル、サービス・コンテキスト・ハンドルおよびエラー・ハンドルを取得します。 |
|
|
PL/SQLに例外を呼び出します。 |
|
「OCIExtProcRaiseExcpWithMsg()」 |
例外をメッセージ付きで呼び出します。 |
コメント
このコールは、外部プロシージャのコール継続時間にamountバイトのメモリーを割り当てます。
このコールで割り当てられたメモリーは、外部プロシージャから戻るとすぐにPL/SQLによって解放されます。アプリケーションでは、OCIExtProcAllocCallMemory()で割り当てたメモリーにfree()関数を使用しないでください。この関数を使用して、関数の戻り値用のメモリーを割り当ててください。
0 (ゼロ)の戻り値はエラーとして扱われます。
構文
sword OCIExtProcGetEnv ( OCIExtProcContext *with_context,
OCIEnv **envh,
OCISvcCtx **svch,
OCIError **errh );
パラメータ
C外部プロシージャに渡されるwith_contextポインタです。「With_Context型」を参照してください。
OCI環境ハンドルを格納する変数のポインタです。
OCIサービス・ハンドルを格納する変数のポインタです。
OCIエラー・ハンドルを格納する変数のポインタです。
コメント
この関数の主な目的は、OCIコールバックで同じトランザクションのデータベースを使用可能にすることです。この関数で取得するOCIハンドルは、データベースに対するOCIコールバックで使用する必要があります。これらのハンドルを標準のOCIコールを介して取得した場合、これらのハンドルはデータベースへの新規接続を使用するので、同一トランザクション内のコールバックには使用できません。1つの外部プロシージャで使用できるのは、コールバックと新規接続のどちらか一方で、両方は使用できません。
コールの例:
OCIEnv *envh; OCISvcCtx *svch; OCIError *errh; ... OCIExtProcGetEnv(ctx,&envh,&svch,&errh);
パラメータ
C外部プロシージャに渡されるwith_contextポインタです。
PL/SQLへシグナルを送るOracle Databaseエラー番号です。errnumの値は、1から32767の正数にしてください。
構文
size_t OCIExtProcRaiseExcpWithMsg ( OCIExtProcContext *with_context,
int errnum,
char *errmsg,
size_t msglen );
PL/SQLへシグナルを送るOracle Databaseエラー番号です。errnumは、1から32767の正数にしてください。
errnumに対応付けられたエラー・メッセージです。
エラー・メッセージの長さです。errmsgがNULLで終了する文字列の場合は、0 (ゼロ)が渡されます。