表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 (ゼロ)が渡されます。