非推奨の初期化関数について説明します。
表E-2は、この項で説明している非推奨の初期化関数を示しています。
表E-2 非推奨の初期化関数
関数 | 用途 |
---|---|
環境ハンドルを初期化します。 |
|
OCIプロセス環境を初期化します。 |
この機能は、Oracle Database 11gリリース2 (11.2)より前のリリースでは非推奨です。
用途
OCI環境ハンドルを割り当て、初期化します。この関数は非推奨です。
構文
sword OCIEnvInit ( OCIEnv **envhpp, ub4 mode, size_t xtramemsz, void **usrmempp );
パラメータ
OCI_DEFAULT
OCI_ENV_NO_UCB
OCI_DEFAULT
モードの場合、OCIライブラリでハンドルが常にmutex化されます。
OCI_ENV_NO_UCB
モードは、環境の初期化時に動的コールバック・ルーチンOCIEnvCallback
のコールを抑止するために使用します。デフォルトでは、このコールは抑止されません。
関連項目:
コメント
注意:
OCIEnvCreate()は、OCIInitialize()
コールおよびOCIEnvInit()
コールのかわりに使用します。OCIInitialize()
およびOCIEnvInit()
コールは、下位互換性を保つためにサポートされています。
このコールは、OCI環境ハンドルの割当ておよび初期化を行います。初期化済のハンドルには何も行いません。OCI_ERROR
またはOCI_SUCCESS_WITH_INFO
が戻った場合は、この環境ハンドルを使用してOracle固有のエラーおよび診断を取得できます。
これはローカルに処理され、サーバー・ラウンドトリップはありません。
環境ハンドルは、OCIHandleFree()
を使用して解放できます。
関連項目:
xtramemsz
パラメータおよびユーザー・メモリー割当ての詳細は、「ユーザー・メモリーの割当て」を参照してください
この機能は、Oracle Database 11gリリース2 (11.2)より前のリリースでは非推奨です。
用途
OCIプロセス環境を初期化します。この関数は非推奨です。
構文
sword OCIInitialize ( ub4 mode, const void *ctxp, const void *(*malocfp) ( void *ctxp, size_t size ), const void *(*ralocfp) ( void *ctxp, void *memptr, size_t newsize ), const void (*mfreefp) ( void *ctxp, void *memptr ));
パラメータ
OCI_DEFAULT
- デフォルト・モード。
OCI_THREADED
- スレッド環境。このモードでは、ユーザーに公開されていない内部データ構造がマルチ・スレッドによって同時にアクセスされないように保護します。
OCI_OBJECT
- オブジェクト機能を使用します。
OCI_EVENTS
- パブリッシュ/サブスクライブ通知を利用します。
メモリー・コールバック・ルーチン用のユーザー定義コンテキストです。
ユーザー定義のメモリー割当て関数です。mode
がOCI_THREADED
の場合、このメモリー割当てルーチンは、スレッド・セーフにしてください。
ユーザー定義のメモリー割当て関数のためのコンテキスト・ポインタです。
ユーザー定義のメモリー割当て関数によって割り当てられるメモリーのサイズです。
ユーザー定義のメモリー再割当て関数です。mode
がOCI_THREADED
の場合、このメモリー割当てルーチンは、スレッド・セーフにしてください。
ユーザー定義のメモリー再割当て関数のためのコンテキスト・ポインタです。
メモリー・ブロックのポインタです。
新しく割り当てられるメモリーのサイズです。
ユーザー定義のメモリー解放関数です。mode
がOCI_THREADED
の場合、このメモリー解放ルーチンは、スレッド・セーフにしてください。
ユーザー定義のメモリー解放関数のためのコンテキスト・ポインタです。
解放されるメモリーへのポインタです。
コメント
注意:
OCIEnvCreate()は、非推奨のOCIInitialize()コールのかわりに使用します。OCIInitialize()
コールは、下位互換性を保つためにサポートされています。
このコールは、OCIプロセス環境を初期化します。OCIInitialize()
は、他のOCIをコールする前にコールする必要があります。
この関数を使用すると、アプリケーションでコールバックを使用して固有のメモリー管理関数を定義できます。アプリケーションでこのようなメモリー管理関数(つまりメモリー割当て、メモリー再割当ておよびメモリー解放)がすでに定義されている場合は、この関数のコールバック・パラメータを使用して登録する必要があります。
これらのメモリー・コールバックはオプションです。アプリケーションで、この関数のメモリー・コールバックにNULL
値を渡すと、デフォルトのプロセス・メモリー割当てメカニズムが使用されます。
関連項目:
OCIを使用したマルチスレッド・アプリケーションのプログラミングの詳細は、「OCIマルチスレッド開発の概要」を参照してください
オブジェクトを使用したOCIプログラミングの詳細は、「OCIオブジェクト・リレーショナル・プログラミング」を参照してください
例
次の文は、ユーザー定義メモリー関数がない場合に、スレッド・モードおよびオブジェクト・モードでOCIInitialize()
をコールする方法の例です。
OCIInitialize((ub4) OCI_THREADED | OCI_OBJECT, (void *)0, (void * (*)()) 0, (void * (*)()) 0, (void (*)()) 0 );