この付録では、OCIのハンドルおよび記述子の属性について説明します。この属性はOCIAttrGet()関数で読み取り、OCIAttrSet()関数で変更することができます。
この付録では、次の項目について説明します。
それぞれのハンドル・タイプで読取りまたは変更が可能な属性をリストします。各属性リストには、次の情報が含まれています。
有効なモードは次のとおりです。
読取り −OCIAttrGet()を使用して属性を読み取ります。
書込み −OCIAttrSet()を使用して属性を変更します。
読取り/書込み −OCIAttrGet()を使用して属性を読み取り、OCIAttrSet()を使用して属性を変更します。
これは、属性の用途の説明です。
これは、属性のデータ型です。必要に応じて、読取りモードと書込みモードのデータ型が区別されます。
一定の値のみが許可される場合には、その値を記載します。
一部の属性については例が記載されています。
読取り/書込み
この属性は、環境ハンドルに対応付けられたアプリケーションの割当て時間にOCI_DURATION_DEFAULTの値を設定します。
OCIDuration */OCIDuration
読取り/書込み
LDAPサーバーへの接続時に使用するログイン名(DN)です。
oratext **/oratext *
読取り/書込み
この属性がTRUEに設定されている場合は、OCICacheFlush()のコールによって、共通の表に属するオブジェクトが一緒にフラッシュされるため、パフォーマンスを大幅に向上することができます。このモードは、オブジェクトのフラッシュの順序が重要でない場合にのみ使用します。このモードの間は、オブジェクトに使用済マークが設定される順序が保持される保証はありません。
boolean */boolean
読取り/書込み
最適サイズのパーセンテージとして、クライアント側オブジェクト・キャッシュの最大サイズ(最高水位標)を設定します。通常、この値を最適サイズOCI_ATTR_CACHE_OPT_SIZEの10%(デフォルト)に設定できます。この属性を0に設定すると、値10が使用されます。オブジェクト・キャッシュは最大の最適値を使用して、オブジェクト・キャッシュ内の未使用メモリーを解放します。
ub4 */ub4
読取り/書込み
クライアント側オブジェクト・キャッシュの最適サイズをバイト数で設定します。デフォルト値は8MBです。この属性を0に設定すると、8MBの値が使用されます。
ub4 */ub4
読取り
ローカル(クライアント側)キャラクタ・セットIDです。ユーザーは、環境ハンドルの作成後にこの設定を更新できますが、他のOCI関数をコールする前に行う必要があります。この制限によって、同じ環境ハンドル内のデータおよびメタデータ間の整合性が保証されます。UTF-16モードでは、この属性を取得できません。
ub2 *
読取り
ローカル(クライアント側)各国語キャラクタ・セットIDです。ユーザーは、環境ハンドルの作成後にこの設定を更新できますが、他のOCI関数をコールする前に行う必要があります。この制限によって、同じ環境ハンドル内のデータおよびメタデータ間の整合性が保証されます。UTF-16モードでは、この属性を取得できません。
ub2 *
読取り
エンコーディング方法はUTF-16です。値1は環境ハンドルがUTF-16モードで作成されたことを示し、値0はそれ以外であることを示します。このモードはOCIEnvCreate()のコールでのみ設定でき、後で変更することはできません。
ub1 *
書込み
この属性は、イベント・コールバック関数を登録します。
OCIEventCallback
書込み
この属性は、イベント・コールバックに渡されるコンテキストを登録します。
void *
読取り
環境ハンドルから割り当てられたメモリーのカレント・サイズです。これは、アプリケーション内でメモリーが最も使用されている部分を追跡するのに役立ちます。
ub4 *
読取り/書込み
認証モードです。次に示す値が有効です。
0x0: 認証なし。匿名のバインドです。
0x1: 簡易認証。ユーザー名およびパスワードによる認証です。
0x5: 認証なしのSSL接続。
0x6: SSL: サーバー認証のみ必要です。
0x7: SSL: サーバー認証とクライアント認証の両方が必要です。
0x8: 認証方式は実行時に判断されます。
ub2 */ub2
読取り/書込み
認証方式が簡易認証(ユーザー名およびパスワードによる認証)の場合、この属性には、LDAPサーバーへの接続時に使用するパスワードが保持されます。
oratext **/oratext *
読取り/書込み
クライアントの管理コンテキストです。通常は、LDAPサーバー内のOracle RDBMS LDAPスキーマのルートです。
oratext **/oratext *
読取り/書込み
LDAPサーバーが実行されているホスト名です。
oratext **/oratext *
読取り/書込み
LDAPサーバーがリスニングするポートです。
ub2 */ub2
読取り
環境がオブジェクト・モードで初期化されている場合は、TRUEを戻します。
boolean *
読取り/書込み
この属性は、環境ハンドルに対応付けられたアプリケーションにOCI_PIN_DEFAULTの値を設定します。
たとえば、OCI_ATTR_PINOPTIONがOCI_PIN_RECENTに設定されている場合に、pin_optionパラメータがOCI_PIN_DEFAULTに設定されているOCIObjectPin()をコールすると、オブジェクトはOCI_PIN_RECENTモードで確保されます。
OCIPinOpt */OCIPinOpt
読取り/書込み
この属性がTRUEに設定されている場合は、新規に作成されるオブジェクトにNULL以外の属性が設定されます。
boolean */boolean
読取り/書込み
この属性がTRUEに設定されている場合は、コミットされた別のトランザクションによってサーバー内で変更されたオブジェクトのフラッシュを試行すると、アプリケーションがORA-08179エラーを受け取ります。
boolean */boolean
読取り/書込み
この属性は、環境ハンドルに対応付けられたアプリケーションの確保継続時間にOCI_DURATION_DEFAULTの値を設定します。
OCIDuration */OCIDuration
読取り
共有プールから現在割り当てられているメモリーのサイズを戻します。この属性はどの環境ハンドルでも使用できますが、有効な値を戻すには、プロセスを共有モードで初期化する必要があります。この属性は次のように読み取られます。
ub4 heapsz = 0;
OCIAttrGet((void *)envhp, (ub4)OCI_HTYPE_ENV,
(void *) &heapsz, (ub4 *) 0,
(ub4)OCI_ATTR_SHARED_HEAPALLOC, errhp);
ub4 *
読取り/書込み
認証方式がSSL認証の場合、この属性にはクライアントWalletの位置が格納されます。
oratext **/oratext *
読取り
この属性は、サービス・コンテキストに対応付けられた環境コンテキストを戻します。
OCIEnv **
読取り
アプリケーションが(OCISvcCtxToLda()コールなどによって)Oracleバージョン7モードに切り替えられているかどうかを判断できます。戻り値が0(ゼロ)以外(TRUE)の場合、アプリケーションは現在Oracleバージョン8モードで実行されており、戻り値が0(ゼロ)(FALSE)の場合、アプリケーションは現在Oracleバージョン7モードで実行されています。
ub1 *
次のコード例で、この属性の使用方法を示します。
in_v8_mode = 0;
OCIAttrGet ((void *)svchp, (ub4)OCI_HTYPE_SVCCTX, (ub1 *)&in_v8_mode,
(ub4) 0, OCI_ATTR_IN_V8_MODE, errhp);
if (in_v8_mode)
fprintf (stdout, "In V8 mode\n");
else
fprintf (stdout, "In V7 mode\n");
読取り/書込み
読取りモードでは、サービス・コンテキストのサーバー・コンテキスト属性へのポインタを戻します。
書込みモードでは、サービス・コンテキストのサーバー・コンテキスト属性を設定します。
OCIServer ** / OCIServer *
読取り/書込み
読取りモードでは、サービス・コンテキストの認証コンテキスト属性へのポインタを戻します。
書込みモードでは、サービス・コンテキストの認証コンテキスト属性を設定します。
OCISession **/ OCISession *
読取り/書込み
文キャッシュに対応したセッションの場合、デフォルトの文キャッシュのサイズ値は20です。このデフォルト値は、この属性をサービス・コンテキスト・ハンドルで設定して増減できますまた、この属性を使用して、(プールされたまたはプールされていない)セッションで文キャッシュを使用可能または使用不可にできます。文キャッシュを使用可能にするには属性をゼロ以外のサイズに、使用不可にするにはゼロに設定します。
ub4 */ ub4
読取り/書込み
読取りモードでは、サービス・コンテキストのトランザクション・コンテキスト属性へのポインタを戻します。
書込みモードでは、サービス・コンテキストのトランザクション・コンテキスト属性を設定します。
OCITrans ** / OCITrans *
|
関連項目: 次のイベント・ハンドル属性もサーバー・ハンドルで使用できます。 |
読取り
ファイルからの不正アクセス・バナーを表示します。
oratext **
読取り
サーバー・コンテキストに対応付けられた環境コンテキストを戻します。
OCIEnv **
読取り/書込み
外部名は使用しやすいグローバルな名前です。これはsys.props$.value$に格納されています(name = 'GLOBAL_DB_NAME')。外部名は、すべてのデータベースでネットワーク・ディレクトリ・サービスを使用して登録しないかぎり、一意である保証はありません。
分散トランザクションを調整する場合に、データベース名をサーバーと交換できます。サーバー・データベース名には、OCISessionBegin()コールの発行時、データベースがオープンされていた場合のみ、アクセスすることができます。
oratext **/ oratext *
読取り/書込み
OCIFocbkStruct *
読取り/書込み
グローバル・トランザクションの実行時に記録されるクライアント・データベース名を設定します。この名前は、障害のために準備状態で保留になっている可能性があるトランザクションを追跡するために、DBAで使用できます。
oratext **/ oratext *
読取り
アプリケーションが(OCISvcCtxToLda()コールなどによって)Oracleバージョン7モードに切り替えられているかどうかを判断できます。戻り値が0(ゼロ)以外(TRUE)の場合、アプリケーションは現在Oracleバージョン8モードで実行されており、戻り値が0(ゼロ)(FALSE)の場合、アプリケーションは現在Oracleバージョン7モードで実行されています。
ub1 *
読取り/書込み
この属性は、ブロック化モードを判断します。サーバー・コンテキストが非ブロック化モードの場合、読取り時にこの属性値はTRUEを戻します。設定すると、非ブロック化モード属性が切り替えられます。この属性を設定できるのは、OCISessionBegin()またはOCILogon2()がコールされた後でのみです。設定されていない場合は、エラーが戻されます。
ub1 */ub1
読取り/書込み
サーバー・グループを指定する、30文字以内の英数字文字列です。この属性は、OCIServerAttach()のコール後にのみ設定できます。
oratext **/oratext *
読取り
サーバー・ハンドルの現行の状態を戻します。値は次のとおりです。
OCI_SERVER_NORMAL− サーバーへのアクティブな接続があります。これは、接続の最後のコールが終了したことを意味します。次のコールが終了する保証はありません。
OCI_SERVER_NOT_CONNECTED− サーバーへの接続はありません。
ub4 *
次のコード例で、このパラメータの使用方法を示します。
ub4 serverStatus = 0
OCIAttrGet((void *)srvhp, OCI_HTYPE_SERVER,
(void *)&serverStatus, (ub4 *)0, OCI_ATTR_SERVER_STATUS, errhp);
if (serverStatus == OCI_SERVER_NORMAL)
printf("Connection is up.\n");
else if (serverStatus == OCI_SERVER_NOT_CONNECTED)
printf("Connection is down.\n");
読取り
サーバー・ハンドルがTAF対応の場合TRUEに、非対応の場合はFALSEに設定します。
boolean *
読取り
ハンドルに追加メモリーが割り当てられている場合、ユーザー・メモリーへのポインタが戻されます。追加メモリーが割り当てられていないハンドルに関しては、NULLポインタが戻されます。
void *
書込み
現行のモジュール内の現行アクション名です。NULLに設定できます。現行のアクションの終了後、次のアクション名、または次のアクションが存在しない場合はNULLをこの属性に設定します。32バイト以下で指定できます。
oratext *
OCIAttrSet(session, OCI_HTYPE_SESSION,(void *)"insert into employees",
(ub4)strlen("insert into employees"), OCI_ATTR_ACTION, error_handle);
|
注意: この属性は、データベース常駐接続プーリングではサポートされません。 |
書込み
外部で初期化されたコンテキストの属性名を指定します。
oratext *
|
注意: この属性は、データベース常駐接続プーリングではサポートされません。 |
読取り
セッションに対するアプリケーション・コンテキスト・リスト記述子を取得します。
OCIParam* *
OCI_ATTR_APPCTX_NAME
|
注意: この属性は、データベース常駐接続プーリングではサポートされません。 |
書込み
外部で初期化されたコンテキストのネームスペースを指定します。
oratext *
|
注意: この属性は、データベース常駐接続プーリングではサポートされません。 |
書込み
外部で初期化されたコンテキストの配列サイズを、属性数を使用して初期化します。
ub4
|
注意: この属性は、データベース常駐接続プーリングではサポートされません。 |
書込み
外部で初期化されたコンテキストの値を指定します。
oratext *
読取り
ファイルからのユーザー・アクション監査バナーを表示します。
oratext **
読取り
前述のコールのサーバー側の時間をマイクロ秒単位で戻します。
ub8 *
書込み
プロキシ認証で使用するクライアントの証明書を指定します。OCI_ATTR_CERTIFICATEを使用した証明書ベースのプロキシ認証は、Oracle Databaseの今後のリリースではサポートされません。かわりに、OCI_ATTR_DISTINGUISHED_NAME属性またはOCI_ATTR_USERNAME属性を使用してください。
ub1 *
書込み
セッション・ハンドルにユーザー識別子を指定します。64バイト以下で指定できます。ユーザー名を含められますが、セキュリティ上の理由から、パスワードは含めません。識別子の最初の文字に':'は使用できません。この文字を使用すると、予期しない動作が発生する場合があります。
oratext *
OCIAttrSet(session, OCI_HTYPE_SESSION,(void *)"janedoe",
(ub4)strlen("janedoe"), OCI_ATTR_CLIENT_IDENTIFIER,
error_handle);
書込み
クライアント・アプリケーションの追加情報です。DBMS_APPLICATION_INFOパッケージによっても設定できます。V$SESSIONビューに格納されています。64バイト以下で指定できます。
oratext *
読取り/書込み
TRUEに設定すると、サーバーは、後続の各OCIコールのコール時間をミリ秒単位で測定します。
boolean */boolean
読取り/書込み
OCIAuthInfoハンドルのこの属性では、データベース常駐接続プール用の接続クラス名(128文字以内の文字列)を明示的に指定します。
oratext **/oratext *
読取り/書込み
スキーマ名とセッションが存在する場合、この属性を使用してOCIAttrSet()をコールすることで、SQLコマンドALTER SESSION SET CURRENT_SCHEMAと同じ結果が得られます。スキーマはサーバーへのラウンドトリップを行う次のOCIコールで変更され、余分なラウンドトリップが回避されます。新しいスキーマ名が存在しない場合、ALTER SESSION SET CURRENT_SCHEMAから戻されるエラーと同じエラーが戻されます。その後入力するDMLまたはDDLコマンド内で、データベース・オブジェクトの前にこの新しいスキーマ名が入ります。
この属性を使用しているクライアントが10gリリース2よりも前のソフトウェア・リリースのサーバーと通信を行うと、OCIAttrSet()コールは無視されます。この属性はOCIAttrGet()でも読み取ることができます。
ub4/ub4
text schema[] = "hr";
err = OCIAttrSet( (void ) mysessp, OCI_HTYPE_SESSION, (void *)schema,
(ub4)strlen( (char *)schema), OCI_ATTR_CURRENT_SCHEMA, (OCIError *)myerrhp);
OCI_ATTR_DEFAULT_LOBPREFETCH_SIZE
読取り/書込み
セッション中にフェッチされる全LOBロケータをユーザーがプリフェッチできるようにします。各LOBロケータのデフォルトのプリフェッチ・バッファ・サイズを指定します。
ub4 */ub4
書込み
プロキシ認証で使用するクライアントの識別名を指定します。
oratext *
読取り/書込み
OCIを使用するドライバ・レイヤーの名称を指定します。(JDBC、ODBC、PHP、SQL*Plusなど。ORA$で始まる名称も予約済です。)今後のアプリケーションでは、固有の名称を選択し、障害診断に役立つように設定できます。この属性は、OCISessionBegin()を実行する前に設定してください。NULL終端文字を含めて最大9個のシングルバイト文字による配列を渡します。このデータは検証されず、サーバーに直接渡されてV$SESSION_CONNECT_INFOまたはGV$SESSION_CONNECT_INFOに表示されます。OCIにより確認されるのは、ドライバ名の配列が30文字以内であることのみです。9文字以上が渡されると、最初の8文字のみが表示されます。
oratext **/oratext *
...
oratext client_driver[9];
...
checkerr(errhp, OCIAttrSet(authp, OCI_HTYPE_SESSION,
client_driver, (ub4)(strlen(client_driver)),
OCI_ATTR_DRIVER_NAME, errhp));
checkerr(errhp, OCISessionBegin(svchp, errhp, authp, OCI_CRED_RDBMS, OCI_DEFAULT);
...
書込み
アプリケーション・サーバーがクライアントにかわってOracleに接続する場合にクライアントが初めに所有する1つまたは複数のロールを指定します。
oratext **
読取り/書込み
セッション・ハンドル用に識別されたセッションを指定します。同じプロセス内または複数プロセス間で、セッションをある環境から別の環境へ複製することができます。これは、同じシステム上のプロセスでも異なるシステム上のプロセスでも可能です。複製するセッションは、移行可能と認証されている必要があります。
ub1 *
次のコード例で、この属性の使用方法を示します。
OCIAttrSet ((void *) authp, (ub4)OCI_HTYPE_SESSION, (void *) mig_session,
(ub4) sz, (ub4)OCI_ATTR_MIGSESSION, errhp);
OCI_ATTR_MODULE
書込み
クライアント・アプリケーションで実行中の現行モジュール名です。現行のモジュールの終了後、新しいモジュール名、または新しいモジュールが存在しない場合はNULLでコールします。48バイト以下で指定できます。
oratext *
OCIAttrSet(session, OCI_HTYPE_SESSION,(void *)"add_employee",
(ub4)strlen("add_employee"), OCI_ATTR_MODULE, error_handle);
書込み
認証に使用するパスワードを指定します。
oratext *
書込み
プロキシ経由でアクセスするターゲット・ユーザー名を指定します。
oratext *
書込み
アプリケーション・サーバーの資格証明をプロキシ認証で使用するように指定します。
OCISession
読取り/書込み
データベース常駐接続プーリング用のOCIAuthInfoハンドルの属性です。値は、OCI_ATTR_PURITY_NEW(アプリケーションでは前のセッション状態で保持されていないセッションが必要)またはOCI_ATTR_PURITY_SELF(セッションが前に使用済でも可)です。OCISessionGet()のコール時にアプリケーションで純正値が指定されていない場合、純正値OCI_ATTR_PURITY_DEFAULTが使用されます。この値は、後でアプリケーションのタイプに応じてOCI_ATTR_PURITY_NEWまたはOCI_ATTR_PURITY_SELFに変換されます。
ub4 */ub4
読取り/書込み
認証に使用するユーザー名を指定します。
oratext **/oratext *
読取り/書込み
OCIDBStartup()をコールする前にこの属性を設定し、データベースの起動に使用するクライアント側のパラメータ・ファイルの場所を指定します。この属性が設定されていない場合、サーバー側のパラメータ・ファイルが使用されます。サーバー側のパラメータ・ファイルが存在しない場合、エラーが戻されます。
oratext */oratext *
|
注意: プールの縮小は、ネットワーク・ラウンドトリップがある場合にのみ発生します。操作がない場合、接続は継続されます。 |
読取り/書込み
この時間値(秒数)を超えてアイドル状態の接続は終了し、オープン接続が最適な数に維持されます。この属性は動的に設定できます。この属性を設定していない場合、接続がタイムアウトになることはありません。
ub4 */ub4
読取り/書込み
この属性は、プール内のすべての接続がビジーで、接続数がすでに最大数に達しているとき、接続の再試行を行う必要があるかどうかを判断します。
この属性が設定されている場合は、すべての接続がビジーで、それ以上接続をオープンできないときにエラーが発生します。設定されていない場合、コールは接続が確立するまで待機します。
この属性が設定されている場合、読取り時には、属性値がTRUEで戻されます。
ub1 */ub1
読取り
ビジーの接続の数を戻します。
ub4 *
読取り
オープンしている接続の数を戻します。
ub4 *
読取り
最小接続数を戻します。
ub4 *
読取り
最大接続数を戻します。
ub4 *
読取り
接続の増分パラメータを戻します。
ub4 *
読取り
ビジーのセッションの数を戻します。
ub4 *
読取り/書込み
この属性は、プール内のすベてのセッションがビジーで、いくつかのセッションがすでに最大に達していることが判明したときに、セッション・プールの動作を判断します。値は次のとおりです。
OCI_SPOOL_ATTRVAL_WAIT− スレッドはセッションが解放されるまでブロックされて待機します。これがデフォルト値です。
OCI_SPOOL_ATTRVAL_NOWAIT− エラーが戻ります。
OCI_SPOOL_ATTRVAL_FORCEGET− すべてのセッションがビジーで、セッション数が最大に達している場合でも、新しいセッションを作成します。OCISessionGet()によって警告が戻されます。この場合、OCISessionGet()が警告を戻すのは、新規作成のセッションがセッションの最大数を超えた場合です。
この値を設定した場合は、Oracleデータベース・サーバーのインスタンスでサポートできるセッション数よりも多いセッションが作成される可能性があります。この場合は、次のエラーがサーバーから戻されます。
ORA 00018 - Maximum number of sessions exceeded
このエラーは、セッション・プールのユーザーに伝播されます。
読取りの場合は、適切な属性値が戻されます。
ub1 */ub1
読取り
セッションの増分パラメータを戻します。
ub4 *
読取り
最大セッション数を戻します。
ub4 *
読取り
最小セッション数を戻します。
ub4 *
読取り
オープンしているセッションの数を戻します。
ub4 *
読取り/書込み
この時間(秒)を超えてアイドル状態のセッションは定期的に終了し、オープンしているセッション数が最適に維持されます。この属性は動的に設定できます。この属性が設定されておらず、プール内に領域が必要な場合は、最低使用頻度のセッションがタイムアウトとなります。OCIでは、プールに解放するときにのみ、タイムアウトしたセッションがチェックされます。
ub4 */ub4
読取り/書込み
セッション・プールの各セッションのデフォルトの文キャッシュ・サイズを、この値に設定します。プールの特定のセッションの文キャッシュ・サイズは、そのセッションでOCI_ATTR_STMTCACHESIZEを使用することでいつでも上書きできます。
ub4 */ ub4
読取り/書込み
この属性を使用して、トランザクションを識別するテキスト文字列の構築または読取りができます。これは、XIDを使用してトランザクションを識別するかわりに使用される方法です。oratext文字列は、64バイトまで指定できます。
oratext ** (READ) / oratext *(書込み)
読取り/書込み
準備時間に使用するタイムアウト時間値の設定または読取りができます。
ub4 *(読取り)/ub4(書込み)
読取り/書込み
トランザクションを識別するXIDの設定または読取りができます。
XID **(読取り)/XID *(書込み)
読取り
文ハンドルのバインド位置の数を戻します。
ub4 *
OCIHandleAlloc(env,(void **) &pStatement, OCI_HTYPE_STMT, (size_t)0, (void **)0);
OCIStmtPrepare (pStatement, err, pszQuery, (ub4)strlen(pszQuery),
(ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT);
OCIAttrGet(pStatement, OCI_HTYPE_STMT, &iNbParameters, NULL, OCI_ATTR_BIND_COUNT,
err);
書込み
この属性を該当するサブスクリプション・ハンドルに設定すると、問合せの実行時に連続問合せ通知用の問合せの登録も作成されます。
OCISubscription *
/* Associate the statement with the subscription handle */
OCIAttrSet (stmthp, OCI_HTYPE_STMT, subscrhp, 0,
OCI_ATTR_CHNF_REGHANDLE, errhp);
読取り
OCIStmtExecute()のコールによる登録後に、登録済問合せの問合せIDを取得します。
ub8 *
読取り
結果セット内の現行の位置を示します。この属性は読取りのみ可能です。設定はできません。
ub4 *
読取り
結果セット内の現行の位置を示します。この属性は読取りのみ可能です。設定はできません。
ub4 *
読取り/書込み
position 0での定義とSELECT...FOR UPDATE文の実行後に、ROWIDがフェッチされるように指定します。
boolean */boolean
読取り
DML操作でのエラーの数を戻します。
ub4 *
読取り
この属性を使用して、文ハンドルに対応付けられた文の選択リストにある列数を取得できます。
ub4 *
...
int i = 0;
ub4 parmcnt = 0;
ub2 type = 0;
OCIParam *colhd = (OCIParam *) 0; /* column handle */
/* Describe of a select-list */
OraText *sqlstmt = (OraText *)"SELECT * FROM employees WHERE employee_id = 100";
checkerr(errhp, OCIStmtPrepare(stmthp, errhp, (OraText *)sqlstmt,
(ub4)strlen((char *)sqlstmt),
(ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT));
checkerr(errhp, OCIStmtExecute(svchp, stmthp, errhp, 1, 0,
(OCISnapshot *)0, (OCISnapshot *)0, OCI_DESCRIBE_ONLY));
/* Get the number of columns in the select list */
checkerr(errhp, OCIAttrGet((void *)stmthp, OCI_HTYPE_STMT, (void *)&parmcnt,
(ub4 *)0, OCI_ATTR_PARAM_COUNT, errhp));
/* go through the column list and retrieve the datatype of each column. We
start from pos = 1 */
for (i = 1; i <= parmcnt; i++)
{
/* get parameter for column i */
checkerr(errhp, OCIParamGet((void *)stmthp, OCI_HTYPE_STMT, errhp,
(void **)&colhd, i));
/* get data-type of column i */
type = 0;
checkerr(errhp, OCIAttrGet((void *)colhd, OCI_DTYPE_PARAM,
(void *)&type, (ub4 *)0, OCI_ATTR_DATA_TYPE, errhp));
}
...
読取り
文の解析エラー・オフセットを戻します。
ub2 *
書込み
プリフェッチされるトップレベル行のメモリー・レベルを設定します。このメモリー・レベルが、指定したメモリー使用量の制限以下である場合は、指定したトップレベル行カウントまでの行がフェッチされます。デフォルト値は0(ゼロ)です。これは、プリフェッチされた行数の計算にメモリー・サイズが含まれていないことを意味します。
ub4 *
書込み
プリフェッチされるトップレベル行の数を設定します。デフォルト値は1行です。
ub4 *
OCI_ATTR_ROW_COUNT
読取り
SELECT文の後、これまでに処理した行の数を戻します。INSERT、UPDATEおよびDELETE文の場合、最後の文によって処理された行の数を戻します。デフォルト値は1です。
スクロール不可カーソルの場合、OCI_ATTR_ROW_COUNTは、この文ハンドルの実行後に発行されたOCIStmtFetch2()コールでユーザー・バッファにフェッチされた行の合計数です。スクロール不可カーソルは前方への順次アクセスのみであるため、この属性は、アプリケーションで参照する最後の行番号を表します。
スクロール・カーソルの場合、OCI_ATTR_ROW_COUNTは、ユーザー・バッファにフェッチされた行の最大(絶対)数を表します。アプリケーションでは、任意の位置でフェッチを行うことができるため、この属性は、(スクロール可能な)文の実行後にユーザーのバッファにフェッチされた行の合計数である必要はありません。
ub4 *
読取り
OCIDescriptorAlloc()によって割り当てられるROWID記述子を戻します。
OCIRowid *
読取り
前回のフェッチまたは1回以上の反復処理でユーザーのバッファに正常にフェッチされた行の数を示します。スクロール可能およびスクロール不可の文ハンドルの両方で使用できます。
ub4 *
ub4 rows;
ub4 sizep = sizeof(ub4);
OCIAttrGet((void *) stmhp, (ub4) OCI_HTYPE_STMT,
(void *)& rows, (ub4 *) &sizep, (ub4)OCI_ATTR_ROWS_FETCHED,
errhp);
読取り
文に対応付けられたSQLコマンドの関数コードを戻します。
ub2 *
表A-1 SQLコマンド・コード
| コード | SQL関数 | コード | SQL関数 | コード | SQL関数 |
|---|---|---|---|---|---|
|
01 |
CREATE TABLE |
43 |
DROP EXTERNAL DATABASE |
85 |
TRUNCATE TABLE |
|
02 |
SET ROLE |
44 |
CREATE DATABASE |
86 |
TRUNCATE CLUSTER |
|
03 |
INSERT |
45 |
ALTER DATABASE |
87 |
CREATE BITMAPFILE |
|
04 |
SELECT |
46 |
CREATE ROLLBACK SEGMENT |
88 |
ALTER VIEW |
|
05 |
UPDATE |
47 |
ALTER ROLLBACK SEGMENT |
89 |
DROP BITMAPFILE |
|
06 |
DROP ROLE |
48 |
DROP ROLLBACK SEGMENT |
90 |
SET CONSTRAINTS |
|
07 |
DROP VIEW |
49 |
CREATE TABLESPACE |
91 |
CREATE FUNCTION |
|
08 |
DROP TABLE |
50 |
ALTER TABLESPACE |
92 |
ALTER FUNCTION |
|
09 |
DELETE |
51 |
DROP TABLESPACE |
93 |
DROP FUNCTION |
|
10 |
CREATE VIEW |
52 |
ALTER SESSION |
94 |
CREATE PACKAGE |
|
11 |
DROP USER |
53 |
ALTER USER |
95 |
ALTER PACKAGE |
|
12 |
CREATE ROLE |
54 |
COMMIT (WORK) |
96 |
DROP PACKAGE |
|
13 |
CREATE SEQUENCE |
55 |
ROLLBACK |
97 |
CREATE PACKAGE BODY |
|
14 |
ALTER SEQUENCE |
56 |
SAVEPOINT |
98 |
ALTER PACKAGE BODY |
|
15 |
(使用されていません) |
57 |
CREATE CONTROL FILE |
99 |
DROP PACKAGE BODY |
|
16 |
DROP SEQUENCE |
58 |
ALTER TRACING |
157 |
CREATE DIRECTORY |
|
17 |
CREATE SCHEMA |
59 |
CREATE TRIGGER |
158 |
DROP DIRECTORY |
|
18 |
CREATE CLUSTER |
60 |
ALTER TRIGGER |
159 |
CREATE LIBRARY |
|
19 |
CREATE USER |
61 |
DROP TRIGGER |
160 |
CREATE JAVA |
|
20 |
CREATE INDEX |
62 |
ANALYZE TABLE |
161 |
ALTER JAVA |
|
21 |
DROP INDEX |
63 |
ANALYZE INDEX |
162 |
DROP JAVA |
|
22 |
DROP CLUSTER |
64 |
ANALYZE CLUSTER |
163 |
CREATE OPERATOR |
|
23 |
VALIDATE INDEX |
65 |
CREATE PROFILE |
164 |
CREATE INDEXTYPE |
|
24 |
CREATE PROCEDURE |
66 |
DROP PROFILE |
165 |
DROP INDEXTYPE |
|
25 |
ALTER PROCEDURE |
67 |
ALTER PROFILE |
166 |
ALTER INDEXTYPE |
|
26 |
ALTER TABLE |
68 |
DROP PROCEDURE |
167 |
DROP OPERATOR |
|
27 |
EXPLAIN |
69 |
(使用されていません) |
168 |
ASSOCIATE STATISTICS |
|
28 |
GRANT |
70 |
ALTER RESOURCE COST |
169 |
DISASSOCIATE STATISTICS |
|
29 |
REVOKE |
71 |
CREATE SNAPSHOT LOG |
170 |
CALL METHOD |
|
30 |
CREATE SYNONYM |
72 |
ALTER SNAPSHOT LOG |
171 |
CREATE SUMMARY |
|
31 |
DROP SYNONYM |
73 |
DROP SNAPSHOT LOG |
172 |
ALTER SUMMARY |
|
32 |
ALTER SYSTEM SWITCH LOG |
74 |
CREATE SNAPSHOT |
173 |
DROP SUMMARY |
|
33 |
SET TRANSACTION |
75 |
ALTER SNAPSHOT |
174 |
CREATE DIMENSION |
|
34 |
PL/SQL EXECUTE |
76 |
DROP SNAPSHOT |
175 |
ALTER DIMENSION |
|
35 |
LOCK |
77 |
CREATE TYPE |
176 |
DROP DIMENSION |
|
36 |
NOOP |
78 |
DROP TYPE |
177 |
CREATE CONTEXT |
|
37 |
RENAME |
79 |
ALTER ROLE |
178 |
DROP CONTEXT |
|
38 |
COMMENT |
80 |
ALTER TYPE |
179 |
ALTER OUTLINE |
|
39 |
AUDIT |
81 |
CREATE TYPE BODY |
180 |
CREATE OUTLINE |
|
40 |
NO AUDIT |
82 |
ALTER TYPE BODY |
181 |
DROP OUTLINE |
|
41 |
ALTER INDEX |
83 |
DROP TYPE BODY |
182 |
UPDATE INDEXES |
|
42 |
CREATE EXTERNAL DATABASE |
84 |
DROP LIBRARY |
183 |
ALTER OPERATOR |
読取り
プリコンパイルされたSQL文のテキストを文ハンドルに戻します。UTF-16モードでは、戻された文はUTF-16エンコーディングになります。長さは、常にバイト単位です。
oratext *
読取り
文のフェッチ状態を戻します。コール元はこの属性を使用して、このセッションが別のサービス・コンテキストで使用できるかどうか、現行のデータ・アクセス・コール・セットでまだ必要かどうかを判断できます。基本的に、フェッチ実行サイクルの途中では、別の文を実行するためにセッション・ハンドルを解放することはありません。次の値が有効です。
OCI_STMT_STATE_INITIALIZED
OCI_STMT_STATE_EXECUTED
OCI_STMT_STATE_END_OF_FETCH
ub4 *
読取り
ハンドルに対応付けられた文のタイプです。次の値が有効です。
OCI_STMT_SELECT
OCI_STMT_UPDATE
OCI_STMT_DELETE
OCI_STMT_INSERT
OCI_STMT_CREATE
OCI_STMT_DROP
OCI_STMT_ALTER
OCI_STMT_BEGIN(PL/SQL文)
OCI_STMT_DECLARE(PL/SQL文)
ub2 *
書込み
ub4 *
読取り/書込み
バインド・ハンドルのキャラクタ・セット・フォームです。デフォルトのフォームはSQLCS_IMPLICITです。この属性を設定すると、バインド・ハンドルでクライアント側のデータベースまたは各国語キャラクタ・セットを使用できます。この属性は、各国語キャラクタ・セットの場合はSQLCS_NCHARに設定し、データベース・キャラクタ・セットの場合はSQLCS_IMPLICITに設定します。
ub1 *
読取り/書込み
バインド・ハンドルのキャラクタ・セットIDです。入力データのキャラクタ・セットがUTF-16(下位互換性のために保持されている、非推奨になったOCI_UC2SIDの置換え)の場合、ユーザーはキャラクタ・セットIDをOCI_UTF16IDに設定する必要があります。バインド値バッファはutextバッファであるとみなされ、入力長ポインタおよび戻り値の長さセマンティクスは、キャラクタ・セマンティクス(utextの数)に変更されます。ただし、先行するOCIBindコールでは、バインド値バッファのサイズをバイト単位で指定する必要があります。
OCI_ATTR_CHARSET_IDは、OCI_ATTR_CHARSET_FORM(設定する場合)の後に設定する必要があります。OCI_ATTR_CHARSET_FORMを設定する前にOCI_ATTR_CHARSET_IDを設定すると、予想しない結果になります。
ub2 *
書込み
バインドするデータを格納するためにアプリケーションがサーバー上に予約する文字数を設定します。
sb4 *
読取り/書込み
sb4 *
書込み
パック10進数の精度を指定します。SQLT_PDN値の場合、精度は2*(value_sz-1)に等しくしてください。SQLT_SLS値の場合、精度は(value_sz-1)に等しくしてください。
バインドまたは定義後に、この値は0(ゼロ)に初期化されます。最初にOCI_ATTR_PDPRC属性を設定して、次にOCI_ATTR_PDSCLを設定します。これらの値のどちらかを変更する必要がある場合は、最初に再バインドまたは再定義を行って、次にこれらの属性を適切に再設定する必要があります。
ub2 *
書込み
パック10進値のスケールを指定します。
バインドまたは定義後に、この値は0(ゼロ)に初期化されます。最初にOCI_ATTR_PDPRC属性を設定して、次にOCI_ATTR_PDSCLを設定します。これらの値のどちらかを変更する必要がある場合は、最初に再バインドまたは再定義を行って、次にこれらの属性を適切に再設定する必要があります。
sb2 *
読取り
この属性は、RETURNING句でDML文をバインドするOUTのコールバック関数を実行しているとき、現行の反復で戻される行数を戻します。
ub4 *
書込み
この属性は非推奨です。
キャラクタ・タイプ・データの文字数を設定します。この属性は、定義バッファに必要な文字数を指定します。定義コールで指定した定義バッファ長は、文字数より大きくする必要があります。
ub4 *
読取り/書込み
定義ハンドルのキャラクタ・セット・フォームです。デフォルトのフォームはSQLCS_IMPLICITです。この属性を設定すると、定義ハンドルでクライアント側のデータベースまたは各国語キャラクタ・セットを使用できます。この属性は、各国語キャラクタ・セットの場合はSQLCS_NCHARに設定し、データベース・キャラクタ・セットの場合はSQLCS_IMPLICITに設定します。
ub1 *
読取り/書込み
定義ハンドルのキャラクタ・セットIDです。出力データのキャラクタ・セットがUTF-16である場合、ユーザーはキャラクタ・セットIDOTTをOCI_UTF16IDに設定する必要があります。定義値バッファはutextバッファであるとみなされ、インジケータおよび戻り値の長さセマンティクスは、キャラクタ・セマンティクス(utextの数)に変更されます。ただし、先行するOCIDefineコールでは、定義値バッファのサイズをバイト単位で指定する必要があります。
OCI_ATTR_CHARSET_IDは、OCI_ATTR_CHARSET_FORM(設定する場合)の後に設定する必要があります。OCI_ATTR_CHARSET_FORMを設定する前にOCI_ATTR_CHARSET_IDを設定すると、予想しない結果になります。
ub2 *
読取り/書込み
特定の列からフェッチするLOBのプリフェッチ長とチャンク・サイズを指定します。
boolean */boolean
読取り/書込み
特定の列からフェッチするLOBロケータのデフォルト・キャッシュ・バッファ・サイズを上書きします。
ub4 */ub4
書込み
クライアント・アプリケーションが定義バッファに格納できる最大文字数を指定します。
sb4 *
書込み
パック10進数の精度を指定します。SQLT_PDN値の場合、精度は2*(value_sz-1)に等しくしてください。SQLT_SLS値の場合、精度は(value_sz-1)に等しくしてください。
バインドまたは定義後に、この値は0(ゼロ)に初期化されます。最初にOCI_ATTR_PDPRC属性を設定して、次にOCI_ATTR_PDSCLを設定します。これらの値のどちらかを変更する必要がある場合は、最初に再バインドまたは再定義を行って、次にこれらの属性を適切に再設定する必要があります。
ub2 *
書込み
パック10進値のスケールを指定します。
バインドまたは定義後に、この値は0(ゼロ)に初期化されます。最初にOCI_ATTR_PDPRC属性を設定して、次にOCI_ATTR_PDSCLを設定します。これらの値のどちらかを変更する必要がある場合は、最初に再バインドまたは再定義を行って、次にこれらの属性を適切に再設定する必要があります。
sb2 *
読取り
記述のルートを指し示します。後続のOCIAttrGet()およびOCIParamGet()コールのために使用します。
ub4 *
読取り
記述ハンドル内のパラメータ数を戻します。記述ハンドルが選択リストの記述である場合は、選択リスト内の列数を示します。
ub4 *
書込み
内部LOBロケータをEmpty値に設定します。これによって、そのロケータはINSERT文またはUPDATE文のバインド変数として使用でき、LOBをEmpty値に初期化できます。LOBがEmpty値になると、OCILobWrite()をコールしてデータをLOBに移入できます。この属性は内部LOB(BLOB、CLOB、NCLOB)に対してのみ有効です。
アプリケーションから、宣言などの0(ゼロ)の値を持つub4のアドレスを渡します。
ub4 lobEmpty = 0
と宣言した後にアドレス&lobEmptyを渡します。
ub4 *
次に示す属性は、OCIAQEnqOptions記述子のプロパティです。
書込み
エンキュー・コールがキュー内に永続メッセージまたはバッファ・メッセージをエンキューできるようにするには、OCIAQEnqOptions記述子のOCI_ATTR_MSG_DELIVERY_MODE属性をそれぞれOCI_MSG_PERSISTENTまたはOCI_MSG_BUFFEREDに設定します。この属性のデフォルト値はOCI_MSG_PERSISTENTです。
ub2
読取り/書込み
この機能は非推奨です。今後のリリースでは削除される可能性があります。
順序逸脱操作で参照されるメッセージのメッセージ識別子を指定します。この値は、OCI_ATTR_SEQUENCE_DIVISIONでOCI_ENQ_BEFOREが指定されている場合にのみ有効です。順序逸脱が未指定の場合には、この値は無視されます。
OCIRaw *
読取り/書込み
この機能は新しいアプリケーションでは非推奨ですが、互換性のため保持されています。
現在エンキューされているメッセージを、すでにキューにあるその他のメッセージより先にデキューするかどうかを指定します。
ub4
次に示す値のみ有効です。
OCI_ENQ_BEFORE− メッセージは、OCI_ATTR_RELATIVE_MSGIDで指定したメッセージより先にエンキューされます。
OCI_ENQ_TOP− メッセージは、その他のあらゆるメッセージより先にエンキューされます。
読取り/書込み
エンキュー要求のトランザクション動作を指定します。
ub4
次に示す値のみ有効です。
OCI_ENQ_ON_COMMIT− エンキューはカレント・トランザクションの一部です。操作は、トランザクションがコミットするときに完了します。これは、デフォルトです。
OCI_ENQ_IMMEDIATE− エンキューはカレント・トランザクションの一部ではありません。固有のトランザクションで操作が行われます。
次に示す属性は、OCIAQDeqOptions記述子のプロパティです。
読取り/書込み
コンシューマ名です。コンシューマ名に一致するメッセージのみがアクセスされます。キューが複数のコンシューマに対して設定されていない場合、このフィールドはNULLに設定します。
oratext *
読取り/書込み
デキューするメッセージの相関識別子を指定します。パーセント符号(%)やアンダースコア(_)などの特殊なパターン・マッチング文字を使用できます。2つ以上のメッセージがパターンに一致する場合、デキューの順序は確定されません。
oratext *
読取り/書込み
デキューに対応付けられたロック動作を指定します。
ub4
次に示す値のみ有効です。
OCI_DEQ_BROWSE− ロックを取得することなくメッセージを読み取ります。これは、SELECT文と同じです。
OCI_DEQ_LOCKED− メッセージを読み取り、書込みロックを取得します。ロックは、トランザクションの継続時間中は有効です。これは、SELECT FOR UPDATE文と同じです。
OCI_DEQ_REMOVE− メッセージを読み取り、それを更新または削除します。これは、デフォルトです。メッセージは、保存プロパティに基づいてキュー・テーブルに保存されます。
OCI_DEQ_REMOVE_NODATA− メッセージの受取りを確認しますが、実際のメッセージ内容は送付しません。
読取り/書込み
デキューするメッセージのメッセージ識別子を指定します。
OCIRaw *
書込み
キューから永続メッセージ、バッファ・メッセージまたはこの両方のメッセージをデキューするためのデキュー・コールを指定するには、OCIAQDeqOptions記述子のOCI_ATTR_MSG_DELIVERY_MODE属性を、それぞれOCI_MSG_PERSISTENT、OCI_MSG_BUFFEREDまたはOCI_MSG_PERSISTENT_OR_BUFFEREDに設定します。この属性のデフォルト値はOCI_MSG_PERSISTENTです。
ub2
読取り/書込み
取り出すメッセージの位置を指定します。最初に位置が判断されます。次に検索基準が適用されます。最後にメッセージが取り出されます。
ub4
次に示す値のみ有効です。
OCI_DEQ_FIRST_MSG− 使用可能なメッセージの中から、検索基準に一致する最初のメッセージを取り出します。これにより、位置はキューの先頭にリセットされます。
OCI_DEQ_NEXT_MSG− 使用可能なメッセージの中から、検索基準に一致する次のメッセージを取り出します。前のメッセージがメッセージ・グループに属していた場合は、検索基準に一致し、なおかつメッセージ・グループに属するメッセージがAQにより取り出されます。これは、デフォルトです。
OCI_DEQ_NEXT_TRANSACTION− 残りのカレント・トランザクション・グループをスキップし、次のトランザクション・グループから最初のメッセージを取り出します。このオプションは、現行のキューに対してメッセージをグループ化できる場合のみ使用できます。
OCI_DEQ_FIRST_MSG_MULTI_GROUP− OCIAQDeqArray()のコールによって位置がキューの先頭にリセットされ、選択可能でかつ検索条件に一致するメッセージが(場合により複数のトランザクション・グループから)itersに達するまでデキューされます。トランザクション・グループを識別するために、新しいメッセージ・プロパティOCI_ATTR_TRANSACTION_NOが定義されます。同じトランザクション・グループに属するメッセージはすべて、このメッセージ・プロパティに対し同一の値を持ちます。
OCI_DEQ_NEXT_MSG_MULTI_GROUP− OCIAQDeqArray()のコールによって、選択可能でかつ検索条件に一致する次のセットのメッセージが(場合により複数のトランザクション・グループから)itersに達するまでデキューされます。トランザクション・グループを識別するために、新しいメッセージ・プロパティOCI_ATTR_TRANSACTION_NOが定義されます。同じトランザクション・グループに属するメッセージはすべて、このメッセージ・プロパティに対し同一の値を持ちます。
読取り/書込み
新しいメッセージをカレント・トランザクションの一部としてデキューするかどうかを指定します。BROWSEモードを使用しているときは、この可視性(visibility)パラメータは無視されます。
ub4
次に示す値のみ有効です。
OCI_DEQ_ON_COMMIT− デキューはカレント・トランザクションの一部になります。これは、デフォルトです。
OCI_DEQ_IMMEDIATE− デキューされたメッセージはカレント・トランザクションの一部にはなりません。固有のトランザクションが構成されます。
読取り/書込み
検索基準に一致するメッセージがないときの待機時間を指定します。同じグループのメッセージがデキューされている場合、このパラメータは無視されます。
ub4
ub4値はいずれも有効ですが、さらに次のような定数が事前定義されています。
OCI_DEQ_WAIT_FOREVER− いつまでも待機します。これは、デフォルトです。
OCI_DEQ_NO_WAIT− 待機しません。
|
注意: OCI_DEQ_NO_WAITオプションを使用してキューのポーリングを行う場合、空のキューをポーリングするとメッセージはデキューされません。OCI_ATTR_NAVIGATIONのデフォルト設定OCI_DEQ_NEXT_MSGのかわりに、OCI_DEQ_FIRST_MSGオプションを使用します。また、デキューにはOCI_ATTR_WAITの0(ゼロ)以外の待機設定(1を推奨)も使用できます。 |
次に示す属性は、OCIAQMsgProperties記述子のプロパティです。
読取り
あるメッセージに対して今までに何回デキューが試みられたかを指定します。このパラメータを、エンキュー時刻に設定することはできません。
sb4
sb4値はいずれも有効です。
読取り/書込み
エンキュー時にプロデューサがメッセージに付けたIDを指定します。
oratext *
文字列は128バイトまで有効です。
読取り/書込み
エンキューしたメッセージを遅延させる秒数を指定します。遅延はメッセージがデキュー可能になった後の秒数を示します。msgidによりデキューすると、遅延指定は上書きされます。遅延を設定すると、エンキューされたメッセージはWAITING状態となり、遅延時間が終了するとともにREADY状態となります。DELAY処理にはキュー・モニターを起動させる必要があります。遅延は、メッセージをエンキューするプロデューサが設定することに注意してください。
sb4
すべてのsb4値が有効ですが、さらに次のような定数が事前定義されています。
OCI_MSG_NO_DELAY− メッセージが即時にデキューできることを示します。
読取り
メッセージがエンキューされた時間を指定します。この値はシステムにより判断されるため、ユーザーは設定できません。
OCIDate
読取り/書込み
正常に処理できないメッセージの移動先となるキューの名前を指定します。メッセージが移動されるのは、デキューがmax_retries以内の回数で成功しなかった場合とメッセージの有効期限が切れた場合です。例外キューのメッセージはすべてEXPIRED状態です。
デフォルトは、キュー・テーブルと対応付けられた例外キューです。移動時に指定の例外キューが存在しない場合、メッセージはキュー・テーブルと対応付けられたデフォルトの例外キューに移動し、警告がアラート・ファイルにログ記録されます。デフォルトの例外キューが使用されている場合は、デキュー時にNULL値が戻されます。
この属性は有効なキュー名を参照する必要があります。
oratext *
読取り/書込み
メッセージの期限切れを指定します。この時間(秒)を経過したメッセージはデキューされません。このパラメータは、遅延からのオフセットです。期限切れ処理にはキュー・モニターを起動させる必要があります。
期限切れ前のメッセージはREADY状態です。期限切れ前にデキューされないメッセージは、EXPIRED状態となって例外デキューに移動します。
sb4
すべてのsb4値が有効ですが、さらに次のような定数が事前定義されています。
OCI_MSG_NO_EXPIRATION− メッセージは期限切れになりません。
読取り
デキュー・コールの後、OCIクライアントはOCIAQMsgProperties記述子のOCI_ATTR_MSG_DELIVERY_MODE属性を読み取り、永続メッセージまたはバッファ・メッセージがデキューされたかどうかを判断できます。属性の値は、永続メッセージの場合はOCI_MSG_PERSISTENT、バッファ・メッセージの場合はOCI_MSG_BUFFEREDです。
ub2
読取り
デキュー時のメッセージの状態を指定します。このパラメータを、エンキュー時刻に設定することはできません。
ub4
戻される値は次の4つのみです。
OCI_MSG_WAITING− メッセージの遅延時間がまだ経過していません。
OCI_MSG_READY− メッセージは処理できる状態にあります。
OCI_MSG_PROCESSED− メッセージは処理され、保存されています。
OCI_MSG_EXPIRED − メッセージは例外キューに移動しました。
読取り/書込み
メッセージの優先度を指定します。数値が小さいほど高い優先度を示します。優先度は、負数も含めたあらゆる数値で指定できます。
デフォルト値は0(ゼロ)です。
sb4
書込み
このパラメータは、複数のコンシューマが可能なキューに対してのみ有効です。デフォルトの受信者はキューのサブスクライバです。このパラメータはデキュー時にコンシューマに戻されません。
OCIAQAgent **
読取り/書込み
メッセージの最初の送信者を識別します。
OCIAgent *
読取り
トランザクションごとにグループ化されたキューの場合、メッセージのトランザクション・グループを識別します。この属性は、OCIAQDeqArray()コールが成功した後に移入されます。1つのグループ内のすべてのメッセージがこの属性に同一の値を持ちます。この属性は、エンキューされたメッセージのトランザクション・グループを設定するためにOCIAQEnqArray()コールによって使用することはできません。
oratext *
読取り/書込み
そのメッセージを生成した最後のキューのメッセージのIDです。メッセージがあるキューから別のキューに伝播される際に、この属性はメッセージの最後の伝播元であるキューのIDを識別します。メッセージが複数のキューを経由して伝播されている場合、この属性は、このメッセージを生成した最初のキューではなく最後のキューのメッセージのIDを識別します。
OCIRaw *
次に示す属性は、OCIAQAgent記述子のプロパティです。
読取り/書込み
プロトコル特定の受信者アドレスです。プロトコルが0(デフォルト)の場合、アドレスのフォームは[schema.]queue[@dblink]です。
oratext *
128バイト以下の任意の文字列を指定できます。
読取り/書込み
メッセージのプロデューサ名またはコンシューマ名です。
oratext *
30バイト以下の任意のOracle識別子を指定できます。
読取り/書込み
アドレスを解釈しメッセージを伝播させるプロトコルです。デフォルト値(現在はこの値のみサポートされています)は0(ゼロ)です。
ub1
有効な値は0(ゼロ)のみです。これはデフォルトでもあります。
読取り/書込み
クライアントが登録用に使用するデータベース・サーバーの識別名です。
OCIServerDNs *
読取り/書込み
サブスクリプション・コールバックです。属性OCI_ATTR_SUBSCR_RECPTPROTOがOCI_SUBSCR_PROTO_OCIに設定されているか、または値が設定されていない場合、この属性は、サブスクリプション・ハンドルが登録コールOCISubscriptionRegister()に渡される前に設定する必要があります。
ub4 (void *, OCISubscription *, void *, ub4, void *, ub4)
書込み
連続問合せ(CQ)通知に固有のQOS(サービス品質フラグ)を設定します。可能な値を渡すことができます。
ub4 *
読取り/書込み
システムによって呼び出された際に、クライアントからOCI_ATTR_SUBSCR_CALLBACKが示すユーザー・コールバックに渡されるコンテキストです。属性OCI_ATTR_SUBSCR_RECPTPROTOがOCI_SUBSCR_PROTO_OCIに設定されているか、または値が設定されていない場合、この属性は、サブスクリプション・ハンドルが登録コールOCI Subscription Register()に渡される前に設定する必要があります。
void *
読取り/書込み
サブスクリプション名です。すべてのサブスクリプションは、サブスクリプション名によって識別されます。サブスクリプション名は、指定された長さの一連のバイト数から構成されます。サブスクリプション名のバイト長は、この名前がNULLで終了しないことを前提として指定する必要があります。名前にマルチバイト・キャラクタが含まれる可能性があるため、この前提は重要です。
クライアントでは、OCIAttrSet()コールを使用して、OCI_HTYPE_SUBSCRのハンドル・タイプとOCI_ATTR_SUBSCR_NAMEの属性タイプを指定することによりサブスクリプション・ハンドルのサブスクリプション名属性を設定できます。
すべてのサブスクリプション・コールバックには、OCI_ATTR_SUBSCR_NAME属性およびOCI_ATTR_SUBSCR_NAMESPACE属性が設定されたサブスクリプション・ハンドルが必要です。これらの属性が設定されていない場合は、エラーが戻されます。サブスクリプション・ハンドルに設定されるサブスクリプション名は、そのネームスペースと一貫性を持たせる必要があります。
oratext *
読取り/書込み
サブスクリプション・ハンドルが使用されるネームスペースです。この属性の有効な値は、OCI_SUBSCR_NAMESPACE_AQ、OCI_SUBSCR_NAMESPACE_DBCHANGEおよびOCI_SUBSCR_NAMESPACE_ANONYMOUSです。
サブスクリプション・ハンドルに設定されるサブスクリプション名は、そのネームスペースと一貫性を持たせる必要があります。
ub4 *
|
注意: OCI_OBJECTモードは通知のグループ化を使用する際に必須です。 |
OCI_ATTR_SUBSCR_NTFN_GROUPING_CLASS
読取り/書込み
通知グループ化クラスです。 デフォルトの0(ゼロ)に設定した場合、他の通知グループ化属性はすべて0(ゼロ)である必要があります。 最新のリリースで時間について実装されており、現行の唯一のグループ化基準です。OCI_SUBSCR_NTFN_GROUPING_CLASS_TIMEに設定できます。
ub1 *
OCI_ATTR_SUBSCR_NTFN_GROUPING_REPEAT_COUNT
読取り/書込み
グループ化を実行する回数です。通知の繰返し回数です。正の整数で指定します。グループ化通知を永続的に送信するには、OCI_NTFN_GROUPING_FOREVERに設定します。
sb4 *
OCI_ATTR_SUBSCR_NTFN_GROUPING_START_TIME
読取り/書込み
グループ化の開始時間です。有効なTIMESTAMP WITH TIME ZONEに設定します。デフォルトは現行のTIMESTAMP WITH TIME ZONEです。
OCIDateTime */OCIDateTime **
OCI_ATTR_SUBSCR_NTFN_GROUPING_TYPE
読取り/書込み
グループ化通知の書式です。グループ内の全イベントの要約またはグループ内の最後のイベントのみにするかを示します。OCIAttrSet()を使用して、OCI_SUBSCR_NTFN_TYPE_SUMMARYまたはOCI_SUBSCR_NTFN_TYPE_LASTのいずれかの通知グループ化タイプに設定します。デフォルトは通知の要約です。もう一つの選択肢は最後の通知です。
ub1 *
OCI_ATTR_SUBSCR_NTFN_GROUPING_VALUE
読取り/書込み
グループ化クラスの値を指定します。時間については、この値は秒単位で指定したグループ化通知の期間です。つまり、この期間の後、OCI_ATTR_SUBSCR_NTFN_GROUPING_REPEAT_COUNTに到達するまでグループ化通知が定期的に送信されます。
ub4 *
読取り/書込み
通知とともに送信する必要があるペイロードに対応するバッファです。バッファ長も同じ属性設定コールに指定できます。サブスクリプションで転送を実行するには、この属性を設定する必要があります。このリリースでは、タイプ化されていない(ub1 *)ペイロードのみをサポートします。
ub1 *
読取り/書込み
環境ハンドルに設定されるサーバーのポート番号です。ポート番号はOCISessionBegin()によってクライアントに送信されます。
ub4 *
読取り/書込み
サーバーのサービス・レベル品質です。可能な設定は、次のとおりです。
OCI_SUBSCR_QOS_RELIABLE− 信頼性。データベースがクラッシュしても、通知は行われます。非永続キューやバッファ・メッセージに対してはサポートされません。
OCI_SUBSCR_QOS_PURGE_ON_NTFN− 受信後、通知を削除し、サブスクリプションも削除します。
OCI_SUBSCR_QOS_PAYLOAD− ペイロード通知。
ub4 *
読取り/書込み
属性OCI_ATTR_SUBSCR_RECPTPROTOがOCI_SUBSCR_PROTO_MAIL、OCI_SUBSCR_PROTO_HTTPまたはOCI_SUBSCR_PROTO_SERVERに設定されているときの通知の受信者名です。
OCI_SUBSCR_PROTO_HTTPの場合は、OCI_ATTR_SUBSCR_RECPTによって、通知の送信先HTTP URL(http://www.oracle.com:80など)が示されます。データベースでHTTP URLの妥当性がチェックされることはありません。
OCI_SUBSCR_PROTO_MAILの場合は、OCI_ATTR_SUBSCR_RECPTによって、通知の送信先の電子メール・アドレス(xyz@oracle.comなど)が示されます。データベース・システムで電子メール・アドレスの妥当性がチェックされることはありません。
OCI_SUBSCR_PROTO_SERVERの場合、OCI_ATTR_SUBSCR_RECPTは、通知イベントで呼び出されるデータベース・プロシージャ(schema.procedureなど)を示します。サブスクライバには、実行するプロシージャに対する適切な権限が必要です。
oratext *
読取り/書込み
クライアントが通知を受信するための表現です。有効な値は、OCI_SUBSCR_PRES_DEFAULTおよびOCI_SUBSCR_PRES_XMLです。
設定しない場合、この属性は、OCI_SUBSCR_PRES_DEFAULTにデフォルト設定されます。
イベント通知をXML表示で受信する場合、この属性はOCI_SUBSCR_PRES_XMLに設定する必要があります。それ以外の場合は、属性を設定しないか、OCI_SUBSCR_PRES_DEFAULTに設定します。
ub4
読取り/書込み
クライアントが通知を受信するためのプロトコルです。有効な値は次のとおりです。
OCIクライアントでイベント通知を受信する場合は、OCI_SUBSCR_PROTO_OCIに設定します。
電子メールをイベント通知で送信する場合は、OCI_SUBSCR_PROTO_MAILに設定します。イベント通知によってPL/SQLプロシージャをデータベースで呼び出す場合は、OCI_SUBSCR_PROTO_SERVERに設定します。HTTP URLをイベント通知に送信する場合は、OCI_SUBSCR_PROTO_HTTPに設定します。
設定しない場合、この属性は、OCI_SUBSCR_PROTO_OCIにデフォルト設定されます。
OCI_SUBSCR_PROTO_OCIの場合は、サブスクリプション・ハンドルを登録コールOCISubscriptionRegister()に渡す前に、OCI_ATTR_SUBSCR_CALLBACK属性とOCI_ATTR_SUBSCR_CTX属性を設定しておく必要があります。
OCI_SUBSCR_PROTO_MAIL、OCI_SUBSCR_PROTO_SERVERおよびOCI_SUBSCR_PROTO_HTTPの場合は、サブスクリプション・ハンドルを登録コールOCISubscriptionRegister()に渡す前に、OCI_ATTR_SUBSCR_RECPT属性を設定しておく必要があります。
ub4 *
読取り/書込み
登録タイムアウトの時間隔(秒)です。0(ゼロ)または未指定の場合、登録は明示的に解除されるまで有効です。
ub4 *
書込み
このトランザクション数ごとに連続問合せ通知がクライアントから行われます。
ub4 *
書込み
操作タイプに基づいて通知をフィルタするために使用します。
ub4 *
書込み
TRUEの場合、連続問合せ通知メッセージには、操作タイプやROWIDなどの行レベルの詳細が含まれます。デフォルトはFALSEです。
boolean *
読取り
登録された表名のリストを取り出すための属性です。これらの属性は、問合せの実行後にサブスクリプション・ハンドルから使用できます。
OCIColl **
読取り
データベース名です。
oratext **
読取り
通知タイプを記述するフラグです。
ub4 *
読取り
操作タイプ(INSERT、UPDATE、DELETEまたはOTHER)です。
ub4 *
読取り
ROWIDの文字列表現です。
oratext **
読取り
表の操作を記述するコレクション型です。コレクションの各要素は、OCI_ATTR_CHDES_TABLEから始まる属性を持つOCI_DTYPE_TABLE_CHDES型の表連続問合せ記述子(OCITableChangeDesc *)です。次のエントリを参照してください。
OCIColl **
読取り
スキーマおよび表名です。たとえば、HR.EMPLOYEESです。
oratext **
読取り
表の操作を記述するフラグです。
ub4 *
OCI_ATTR_CHDES_TABLE_ROW_CHANGES
読取り
表の行への変更を記述する埋込みコレクションです。コレクションの各要素は、OCI_ATTR_CHDES_ROW_OPFLAGSおよびOCI_ATTR_CHDES_ROW_ROWID属性を持つOCI_DTYPE_ROW_CHDES型の行連続問合せ記述子(OCIRowChangeDesc *)です。
OCIColl **
記述子OCI_DTYPE_AQNFYの属性:
OCI_ATTR_AQ_NTFN_GROUPING_COUNT
読取り
AQネームスペース用です。グループ内の受信した通知数です。
ub4 *
OCI_ATTR_AQ_NTFN_GROUPING_ MSGID_ARRAY
読取り
AQネームスペース用です。この場合のグループは、メッセージIDのOCIコレクションです。
OCIColl **
読取り
通知のコンシューマ名です。
oratext *
読取り
0=通常、1=タイムアウト通知、2=グループ化通知となります。
ub4 *
読取り
メッセージIDです。
OCIRaw *
読取り
メッセージ・プロパティです。
OCIAQMsgProperties **
読取り
通知のキュー名です。
oratext *
読取り
問合せ時に発生した操作です。値OCI_EVENT_QUERYCHANGE(問合せ結果セットの変更)またはOCI_EVENT_DEREG(問合せ登録解除)のいずれかを使用できます。
ub4 *
読取り
無効化された問合せの問合せIDです。
ub8 *
読取り
問合せ結果セットの変更原因となった表に対するDMLまたはDDL操作を記述する、表連続問合せ記述子のコレクションです。コレクションの各要素はOCI_DTYPE_TABLE_CHDES型です。
OCIColl *
読取り/書込み
ストリーム転送バッファのサイズを設定します。デフォルト値は64KBです。
ub4 */ub4 *
読取り/書込み
文字データのデフォルトのキャラクタ・セットIDです。このキャラクタ・セットIDは、列レベルで上書きできることに注意してください。キャラクタ・セットIDが列レベルまたは表レベルで指定されていない場合は、グローバル・サポート環境設定が使用されます。
ub2 */ub2 *
読取り/書込み
SQLT_CHARからDTYDATに変換する際の、デフォルトの日付書式文字列です。この日付書式文字列は、列レベルで上書きできることに注意してください。日付書式文字列が列レベルまたは表レベルで指定されていない場合は、グローバル・サポート環境設定が使用されます。
oratext **/oratext *
OCI_ATTR_DIRPATH_DCACHE_DISABLE
読取り/書込み
この属性を1に設定して、容量を超えた日付キャッシュは無効になることを示します。デフォルト値は0です。これは、キャッシュ内の参照項目によってキャッシュのオーバーフローが継続されることを意味します。
ub1 */ub1 *
読取り
日付キャッシュのヒット数を問い合せます。
ub4 *
OCI_ATTR_DIRPATH_DCACHE_MISSES
読取り
日付キャッシュに関する現在のミスの数を問い合せます。
ub4 *
読取り
日付キャッシュ内の現在のエントリ数を問い合せます。
ub4 *
読取り/書込み
表に日付キャッシュのサイズ(要素数単位)を設定します。日付キャッシュを使用禁止にするには、デフォルト値の0を設定します。
ub4 */ub4 *
OCI_ATTR_DIRPATH_INDEX_MAINT_METHOD
読取り/書込み
行単位で索引行の挿入を実行します。
次の値が有効です。
OCI_DIRPATH_INDEX_MAINT_SINGLE_ROW
ub1 */ub1 *
読取り/書込み
ダイレクト・パス・コンテキストのモードです。
OCI_DIRPATH_LOAD− ロード操作(デフォルト)
OCI_DIRPATH_CONVERT− 変換専用操作
ub1 */ub1 *
読取り/書込み
各セグメントのNOLOG属性は、イメージREDOと無効化REDOのどちらが生成されるかを次のように判断します。
0− ロードされるセグメントの属性を使用します。
1− ログ記録を行いません。必要に応じてDDL文を上書きします。
ub1 */ub1 *
読取り/書込み
次のように、置換可能なオブジェクト表のオブジェクト型を示します。
OraText *obj_type; /* stores an object type name */
OCIAttrSet((void *)dpctx,
(ub4)OCI_HTYPE_DIRPATH_CTX,
(void *) obj_type,
(ub4)strlen((const char *) obj_type),
(ub4)OCI_ATTR_DIRPATH_OBJ_CONSTR, errhp);
oratext **/oratext *
読取り/書込み
この値を1に設定すると、複数ロード・セッションで、共通のセグメントを同時にロードできます。デフォルトは0(ゼロ)です(非パラレル)。
ub1 */ub1 *
OCI_ATTR_DIRPATH_SKIPINDEX_METHOD
読取り/書込み
使用できない索引の処理方法を示します。
次の値が有効です。
OCI_DIRPATH_INDEX_MAINT_SKIP_UNUSABLE(使用できない索引をスキップする)
OCI_DIRPATH_INDEX_MAINT_DONT_SKIP_UNUSABLE(使用できない索引をスキップしない)
OCI_DIRPATH_INDEX_MAINT_SKIP_ALL(すべての索引メンテナンスをスキップする)
ub1 */ub1 *
読取り
ダイレクト・パス・コンテキストに対応付けられた列リストのパラメータ記述子に、ハンドルを戻します。OCI_ATTR_NUM_COLS属性で列数を設定した後で、列リスト・パラメータ記述子を取り出すことができます。
OCIParam* *
読取り/書込み
ロードされる表の名前です。
oratext **/oratext *
読取り/書込み
表にロードされる列の数です。
ub2 */ub2 *
読取り/書込み
読取り時: これまでにロードした行の数です。
書込み時: ダイレクト・パスおよびダイレクト・パス関数の列配列に対して割り当てられた行の数です。
ub2 */ub2 *
読取り/書込み
ロードされる表が存在するスキーマの名前です。指定しない場合は、デフォルトで、接続ユーザーのスキーマが使用されます。
oratext **/oratext *
読取り/書込み
ロードされるパーティションまたはサブパーティションの名前です。指定しない場合は、表全体がロードされます。名前は、その表に属する有効なパーティションまたはサブパーティションの名前にする必要があります。
oratext **/oratext *
属性の詳細な説明は、次を参照してください。
読取り/書込み
スカラー列以外の関数コンテキストのOCI_ATTR_NAMEで指定された式の型を示します。
次の値が有効です。
OCI_DIRPATH_EXPR_OBJ_CONSTR(列オブジェクトのオブジェクト型名)
OCI_DIRPATH_EXPR_REF_TBLNAME(参照オブジェクトの表名)
OCI_DIRPATH_EXPR_SQL(列値を導出するためのSQL文字列)
ub1 */ub1 *
読取り
ダイレクト・パス関数コンテキストに対応付けられた列リストのパラメータ記述子に、ハンドルを戻します。列リストのパラメータ記述子は、列数(スカラー列以外の列に対応付けられた属性または引数の数)を設定した後に、OCI_ATTR_NUM_COLS属性を使用して取り出すことができます。
OCIParam* *
読取り/書込み
関数コンテキストが列オブジェクトを記述している場合はオブジェクト型名、SQL文字列を記述している場合はSQL関数、REF列を記述している場合は参照表名です。
oratext **/oratext *
読取り/書込み
列が列オブジェクトの場合は、ロードするオブジェクト属性の数です。列がSQL文字列またはREF列の場合は、処理する引数の数です。このパラメータは、列リストが取り出される前に設定する必要があります。
ub2 */ub2 *
読取り
これまでにロードした行の数です。
ub4 *
読取り
最後に処理された行の最終列です。
ub2 *
読取り
列配列の列ディメンションです。
ub2 *
読取り
列配列の行ディメンションです。
ub4 *
読取り
OCIDirPathColArrayToStream()の最後のコールで正しく変換された行数です。
ub4 *
読取り
ストリーム・データの先頭のバッファ・アドレスです。
ub1 **
読取り
ストリーム・データのバイト単位のサイズです。
ub4 *
読取り
最後のOCIDirPathLoadStream()コールで正しくロードされた行数です。
ub4 *
読取り
最後に処理された行の、ストリーム・バッファへのオフセットです。
ub4 *
アプリケーションでは、各列パラメータ記述子に対して属性を設定することにより、ロードする列、およびデータの外部書式を指定します。列パラメータ記述子は、OCIParamGet()によって、列パラメータ・リストのパラメータとして取得されます。表の列パラメータ・リストは、ダイレクト・パス・コンテキストのOCI_ATTR_LIST_COLUMNS属性から取得されます。非スカラー列の場合、列パラメータ・リストは、そのダイレクト・パス関数コンテキストのOCI_ATTR_LIST_COLUMNS属性から取得されます。
すべてのパラメータは1を基準としていることに注意してください。
次のコード例は、スカラー列のダイレクト・パス列パラメータ属性の使用方法を示しています。この属性にアクセスするには、最初に、ロードする列の数を設定して、OCI_ATTR_LIST_COLUMNS属性から列パラメータ・リストを取得する必要があります。
...
/* set number of columns to be loaded */
OCI_CHECK(ctlp->errhp_ctl, OCI_HTYPE_ERROR, ociret, ctlp,
OCIAttrSet((void *)dpctx, (ub4)OCI_HTYPE_DIRPATH_CTX,
(void *)&tblp->ncol_tbl,
(ub4)0, (ub4)OCI_ATTR_NUM_COLS, ctlp->errhp_ctl));
/* get the column parameter list */
OCI_CHECK(ctlp->errhp_ctl, OCI_HTYPE_ERROR, ociret, ctlp,
OCIAttrGet((void *)dpctx, OCI_HTYPE_DIRPATH_CTX,
(void *)&ctlp->colLstDesc_ctl, (ub4 *)0,
OCI_ATTR_LIST_COLUMNS, ctlp->errhp_ctl));
これで、パラメータ属性を設定できます。
/* set the attributes of each column by getting a parameter handle on each
* column, then setting attributes on the parameter handle for the column.
* Note that positions within a column list descriptor are 1-based. */
for (i = 0, pos = 1, colp = tblp->col_tbl, fldp = tblp->fld_tbl;
i < tblp->ncol_tbl;
i++, pos++, colp++, fldp++)
{
/* get parameter handle on the column */
OCI_CHECK(ctlp->errhp_ctl, OCI_HTYPE_ERROR, ociret, ctlp,
OCIParamGet((const void *)ctlp->colLstDesc_ctl,
(ub4)OCI_DTYPE_PARAM, ctlp->errhp_ctl,
(void **)&colDesc, pos));
colp->id_col = i; /* position in column array */
/* set external attributes on the column */
/* column name */
OCI_CHECK(ctlp->errhp_ctl, OCI_HTYPE_ERROR, ociret, ctlp,
OCIAttrSet((void *)colDesc, (ub4)OCI_DTYPE_PARAM,
(void *)colp->name_col,
(ub4)strlen((const char *)colp->name_col),
(ub4)OCI_ATTR_NAME, ctlp->errhp_ctl));
/* column type */
OCI_CHECK(ctlp->errhp_ctl, OCI_HTYPE_ERROR, ociret, ctlp,
OCIAttrSet((void *)colDesc, (ub4)OCI_DTYPE_PARAM,
(void *)&colp->exttyp_col, (ub4)0,
(ub4)OCI_ATTR_DATA_TYPE, ctlp->errhp_ctl));
/* max data size */
OCI_CHECK(ctlp->errhp_ctl, OCI_HTYPE_ERROR, ociret, ctlp,
OCIAttrSet((void *)colDesc, (ub4)OCI_DTYPE_PARAM,
(void *)&fldp->maxlen_fld, (ub4)0,
(ub4)OCI_ATTR_DATA_SIZE, ctlp->errhp_ctl));
if (colp->datemask_col) /* set column (input field) date mask */
{
OCI_CHECK(ctlp->errhp_ctl, OCI_HTYPE_ERROR, ociret, ctlp,
OCIAttrSet((void *)colDesc, (ub4)OCI_DTYPE_PARAM,
(void *)colp->datemask_col,
(ub4)strlen((const char *)colp->datemask_col),
(ub4)OCI_ATTR_DATEFORMAT, ctlp->errhp_ctl));
}
if (colp->prec_col)
{
OCI_CHECK(ctlp->errhp_ctl, OCI_HTYPE_ERROR, ociret, ctlp,
OCIAttrSet((void *)colDesc, (ub4)OCI_DTYPE_PARAM,
(void *)&colp->prec_col, (ub4)0,
(ub4)OCI_ATTR_PRECISION, ctlp->errhp_ctl));
}
if (colp->scale_col)
{
OCI_CHECK(ctlp->errhp_ctl, OCI_HTYPE_ERROR, ociret, ctlp,
OCIAttrSet((void *)colDesc, (ub4)OCI_DTYPE_PARAM,
(void *)&colp->scale_col, (ub4)0,
(ub4)OCI_ATTR_SCALE, ctlp->errhp_ctl));
}
if (colp->csid_col)
{
OCI_CHECK(ctlp->errhp_ctl, OCI_HTYPE_ERROR, ociret, ctlp,
OCIAttrSet((void *)colDesc, (ub4)OCI_DTYPE_PARAM,
(void *)&colp->csid_col, (ub4)0,
(ub4)OCI_ATTR_CHARSET_ID, ctlp->errhp_ctl));
}
/* free the parameter handle to the column descriptor */
OCI_CHECK((void *)0, 0, ociret, ctlp,
OCIDescriptorFree((void *)colDesc, OCI_DTYPE_PARAM));
}
...
読取り/書込み
キャラクタ列のキャラクタ・セットIDです。設定しない場合は、ダイレクト・パス・コンテキスト内に設定されたキャラクタ・セットIDがデフォルトとして使用されます。
ub2 */ub2 *
読取り/書込み
列の外部データのバイト単位の最大サイズです。これは、変換バッファ・サイズに影響する可能性があります。
ub4 */ub4 *
SQLT_CHR
SQLT_DATE
SQLT_TIMESTAMP
SQLT_TIMESTAMP_TZ
SQLT_TIMESTAMP_LTZ
SQLT_INTERVAL_YM
SQLT_INTERVAL_DS
SQLT_INT
SQLT_UIN
SQLT_FLT
SQLT_PDN
SQLT_BIN
SQLT_NUM
SQLT_NTY
SQLT_REF
SQLT_VST
SQLT_VNU
ub2 */ub2 *
読取り/書込み
列の日付変換マスクです。設定しない場合、日付書式は、デフォルトでダイレクト・パス・コンテキスト内に設定された日付変換マスクになります。
oratext **/oratext *
読取り/書込み
ロードする列は、オブジェクト表のオブジェクトID列であることを示します。
ub1 */ub1 *
OCI_ATTR_DIRPATH_SID
読取り/書込み
ロードする列は、ネストした表のsetid列であることを示します。
ub1 */ub1 *
読取り/書込み
ロードされる列の名前を戻すか、または設定します。OCIAttrGet()をコールする前に、列名と列名の長さの両方を0に初期化します。
oratext **/oratext *
読取り/書込み
精度を戻すか、または設定します。
明示的な記述の場合は、ub1 */ub1 *
暗黙的な記述の場合は、sb2 */sb2 *
読取り/書込み
パック10進数およびゾーン10進数の入力データ型からの変換のスケール(小数点以下の桁数)を戻すか、または設定します。
sb1 */sb1 *
共有システムのパラメータは、OCIAttrSet()コールおよびOCIAttrGet()コールを使用して設定および読取りができます。使用するハンドル・タイプはプロセス・ハンドルOCI_HTYPE_PROCです。
OCI_ATTR_MEMPOOL_APPNAME属性、OCI_ATTR_MEMPOOL_HOMENAME属性およびOCI_ATTR_MEMPOOL_INSTNAME属性は、アプリケーション名、ホーム名およびインスタンス名を指定します。これらの名前を一緒に使用して、プロセスを適切な共有プール領域にマップすることができます。これらの属性を設定しない場合は、内部デフォルト値が使用されます。特定の動作のための有効な属性設定を次に示します。
インスタンス名、アプリケーション名(非修飾): この設定では、特定の名前の実行可能ファイルのみが、共通の共有サブシステムに接続できます。たとえば、「Office」という名前のOCIアプリケーションが、「Office」が存在するディレクトリに関係なく、共通の共有サブシステムに接続できます。
インスタンス名、ホーム名: この設定では、特定のホーム・ディレクトリ内の一連の実行可能ファイルが、共有サブシステムの同じインスタンスに接続できます。たとえば、ORACLE_HOMEディレクトリに存在するすべてのOCIアプリケーションが、共通の共有サブシステムを使用できます。
インスタンス名、ホーム名、アプリケーション名(非修飾): この設定では、特定の実行可能ファイルのみが、共有サブシステムに接続できます。たとえば、ORACLE_HOMEディレクトリ内の「Office」という名前の1つのアプリケーションが、指定の共有サブシステムに接続できます。
読取り/書込み
実行可能ファイルのファイル名または完全修飾パス名です。
oratext *
読取り/書込み
共通の共有サブシステム・インスタンスを使用する実行可能ファイルが存在するディレクトリ名です。
oratext *
読取り/書込み
共有サブシステムのインスタンスを識別する、任意のユーザー定義名です。
oratext *
読取り/書込み
共有プールのバイト単位のサイズです。この属性は次のように設定されます。
ub4 plsz = 1000000;
OCIAttrSet((void *)0, (ub4) OCI_HTYPE_PROC,
(void *)&plsz, (ub4) 0, (ub4) OCI_ATTR_POOL_SIZE, 0);
ub4 *
読取り
現在設定されているすべてのプロセス・モードを戻します。読み取られる値には、現在設定されているすべてのOCIプロセス・モードの論理和をとった値が含まれます。特定のモードが設定されているかどうかを判断するには、そのモードで値の論理和をとります。たとえば、次のようにします。
ub4 mode;
boolean is_shared;
OCIAttrGet((void *)0, (ub4)OCI_HTYPE_PROC,
(void *) &mode, (ub4 *) 0,
(ub4)OCI_ATTR_PROC_MODE, 0);
is_shared = mode | OCI_SHARED;
ub4 *
OCIEventハンドルは、イベント・ペイロードの属性をカプセル化します。このハンドルは、イベント・コールバックをコールする前に暗黙的に割り当てられます。
イベント・コールバックは、次の属性とともにOCIAttrGet()を使用して、イベントの属性を取得します。
読取り
この属性を使用してOCIAttrGet()をコールすると、このイベントによる影響を受けたデータベース・ドメイン名が取り出されます。 これもサーバー・ハンドル属性です。
oratext **
読取り
この属性を使用してOCIAttrGet()をコールすると、このイベントによる影響を受けたデータベース名が取り出されます。 これもサーバー・ハンドル属性です。
oratext **
読取り
発生したイベントのイベント型OCI_EVENTTYPE_HAです。
ub4 *
読取り
イベント型がOCI_EVENTTYPE_HAである場合、この属性を使用してイベントのソースを取得します。次の値が有効です。
OCI_HA_SOURCE_DATABASE
OCI_HA_SOURCE_NODE
OCI_HA_SOURCE_INSTANCE
OCI_HA_SOURCE_SERVICE
OCI_HA_SOURCE_SERVICE_MEMBER
OCI_HA_SOURCE_ASM_INSTANCE
OCI_HA_SOURCE_SERVICE_PRECONNECT
ub4 *
読取り
この属性を使用してOCIAttrGet()をコールすると、Real Application Clusters(RAC)HA DOWNイベントによる影響を受けたサーバー・ハンドルのリストから最初のサーバー・ハンドルが取り出されます。
OCIServer **
読取り
この属性を使用してOCIAttrGet()をコールすると、Real Application Clusters(RAC)HA DOWNイベントによる影響を受けたサーバー・ハンドルのリストから次のサーバー・ハンドルが取り出されます。
OCIServer **
読取り
有効な値はOCI_HA_STATUS_DOWNです。現在、サブスクライブされているのはDOWNイベントのみです。
ub4 *
読取り
HAイベントが発生した時刻です。
OCIDateTime **
読取り
この属性を使用してOCIAttrGet()をコールすると、このイベントによる影響を受けたホストの名称が取り出されます。
oratext **
読取り
この属性を使用してOCIAttrGet()をコールすると、このイベントによる影響を受けたインスタンスの名称が取り出されます。 これもサーバー・ハンドル属性です。
oratext **
読取り
この属性を使用してOCIAttrGet()をコールすると、このイベントによる影響を受けたインスタンスの起動時間が取り出されます。 これもサーバー・ハンドル属性です。
OCIDateTime **
読取り
この属性を使用してOCIAttrGet()をコールすると、このイベントによる影響を受けたサービスの名称が取り出されます。 名前の長さはub4 *です。 これもサーバー・ハンドル属性です。
oratext **