A ハンドルおよび記述子の属性
この付録では、OCIのハンドルおよび記述子の属性について説明します。
A.2 環境ハンドル属性
環境ハンドル属性をリストし、説明します。
環境ハンドルには、次の属性を使用します。
OCI_ATTR_ALLOC_DURATION
OCI_ATTR_BIND_DN
OCI_ATTR_CACHE_ARRAYFLUSH
OCI_ATTR_CACHE_MAX_SIZE
OCI_ATTR_CACHE_OPT_SIZE
OCI_ATTR_ENV_CHARSET_ID
OCI_ATTR_ENV_NCHARSET_ID
OCI_ATTR_ENV_NLS_LANGUAGE
OCI_ATTR_ENV_NLS_TERRITORY
OCI_ATTR_ENV_UTF16
OCI_ATTR_EVTCBK
OCI_ATTR_EVTCTX
OCI_ATTR_HEAPALLOC
OCI_ATTR_LDAP_AUTH
OCI_ATTR_LDAP_CRED
OCI_ATTR_LDAP_CTX
OCI_ATTR_LDAP_HOST
OCI_ATTR_LDAP_PORT
OCI_ATTR_OBJECT
OCI_ATTR_PINOPTION
OCI_ATTR_OBJECT_NEWNOTNULL
OCI_ATTR_OBJECT_DETECTCHANGE
OCI_ATTR_PIN_DURATION
OCI_ATTR_SHARED_HEAPALLOC
OCI_ATTR_SUBSCR_PORTNO
OCI_ATTR_WALL_LOC
A.4 サービス・コンテキスト・ハンドル属性
サービス・コンテキスト・ハンドル属性をリストし、説明します。
サービス・コンテキスト・ハンドルには、次の属性を使用します。
OCI_ATTR_CALL_TIMEOUT
- モード
-
READ/WRITE
- 説明
-
サービス・コンテキストを使用するデータベース・ラウンドトリップ・コールはミリ秒単位で指定された時間内にタイムアウトします(完了していない場合)。コールがタイムアウトした場合、ネットワーク・タイムアウト・エラーが返されます。この属性は動的に設定できます。この値を設定すると、別の値が設定されるまで、同じサービス・コンテキストを使用して実行される後続のすべてのラウンドトリップ・コールに対して有効のままです。タイムアウトをなくすには、値を0 (ゼロ)に設定する必要があります。
これは、クライアントのみの変更です。したがって、この機能を使用するには、リリース18cクライアントを使用する必要があります。この機能はデータベース・バージョンに依存しないため、サポートされているすべてのバージョンのデータベースで使用できます。
別の場所で設定されたタイムアウト値は、次の優先順位に応じて有効になります(1が最優先です)。-
OCIAttrSet()
を使用してOCIハンドルに設定したコール・タイムアウト。 -
OCI属性の
OCI_ATTR_SEND_TIMEOUT
およびOCI_ATTR_RECEIVE_TIMEOUT
を使用して設定されたタイムアウト。 -
sqlnet.ora
ファイルにパラメータのSQLNET.RECV_TIMEOUT
およびSQLNET.SEND_TIMEOUT
を使用して設定されたタイムアウト。
アプリケーションに戻されるエラーは次のとおりです。ORA-03156 "OCI call timed out"
コール・タイムアウトは、OCIとOracle Databaseとの間の個々のラウンドトリップで起こります。OCIメソッドまたは操作ごとに、Oracle Databaseに0回またはそれ以上のラウンドトリップが必要な場合があります。タイムアウト値は、すべてのラウンドトリップの合計ではなく、個々のラウンドトリップに適用されます。各ラウンドトリップの完了前または完了後のOCIでの処理時間はカウントされません。-
あるラウンドトリップの開始から完了までの時間がタイムアウト値を超えると、操作は停止され、Oracleエラーが返されます。
-
OCI操作に複数のラウンドトリップが必要で、各ラウンドトリップがタイムアウト値より少ない場合、すべてのラウンドトリップ・コールの合計がタイムアウト値を超えるても、タイムアウトは発生しません。
-
ラウンドトリップが不要な場合、操作は中断されません。
タイムアウトが発生すると、OCIは内部接続状態をクリーン・アップしようとします。クリーン・アップには、別のタイムアウト値を指定できます。クリーン・アップが成功すると、
ORA-3156
が返され、アプリケーションは引き続き接続を使用できます。タイムアウト値が小さい場合、追加のタイムアウト期間内に接続のクリーン・アップが正常に完了しないことがあります。この場合、
ORA-3113
が戻され、同じ接続を使用する次のOCIコールでORA-3114が戻されて、その接続を使用できなくなります。それを解放する必要があります。または、
OCI_ATTR_BREAK_ON_NET_TIMEOUT
属性をFALSE
に追加で設定できます。この設定によって接続が削除され、タイムアウト発生時のOCIBreak()
およびOCIReset()
のコールがなくなります。注意:
コール・タイムアウトが設定されている場合、大量のデータの読取り中にora-12161が返されることがあります。このエラーは、ora-3136として扱う必要があります。 -
- 属性のデータ型
-
ub4*/ub4
- 例
static void func1( ) { sword status = 0; OCIStmt *stmthp = (OCIStmt *)0; OraText *sqlStmt = (OraText *)"SELECT EMPNO FROM SCOTT.EMP"; ub4 set_timeout= 200; /* in milliseconds */ ub4 get_timeout = 0; Checkerr (errhp, \ OCIStmtPrepare2 ((OCISvcCtx *)svchp, (OCIStmt **)&stmthp, \ (OCIError *)errhp, (OraText *)sqlStmt, (ub4)strlen((char *)sqlStmt), \ (OraText *)NULL, (ub4) 0, (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT), \ (OraText *)"OCIStmtPrepare2"); /* Set the call Timeout (in milliseconds) */ Checkerr (errhp, OCIAttrSet(svchp, (ub4) OCI_HTYPE_SVCCTX, (dvoid *) &set_timeout, (ub4) 0, (ub4) OCI_ATTR_CALL_TIMEOUT, errhp), "OCIAttrSet OCI_ATTR_CALL_TIMEOUT"); if ((status = OCIStmtExecute ((OCISvcCtx *)svchp, \ (OCIStmt *)stmthp, (OCIError *)errhp, (ub4)1, (ub4)0, \ (OCISnapshot *)0, (OCISnapshot *)0, (ub4)OCI_DEFAULT)) \ != OCI_SUCCESS) { printf ( "OCIStmtExecute Failed with timeout: %dms\n", set_timeout); Checkerr (errhp, status,(OraText *)"OCIStmtExecute"); } /* Get the call Timeout (in milliseconds) */ Checkerr (errhp, OCIAttrGet(svchp, (ub4) OCI_HTYPE_SVCCTX, (dvoid *) &get_timeout, (ub4) 0, (ub4) OCI_ATTR_CALL_TIMEOUT, errhp), "OCIAttrGet OCI_ATTR_CALL_TIMEOUT"); Checkerr (errhp, \ OCIStmtRelease ((OCIStmt *)stmthp, (OCIError *)errhp,(dvoid *)NULL, \ 0, OCI_DEFAULT), (oratext *)"StmtRelease"); } /* End of func1 */
OCI_ATTR_ENV
OCI_ATTR_INSTNAME
サービス・コンテキストでの使用方法の詳細は、「シャード・インスタンス記述子属性」のOCI_ATTR_INSTNAME
属性を参照してください。
OCI_ATTR_IN_V8_MODE
- モード
-
READ
- 説明
-
アプリケーションが(
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");
OCI_ATTR_MAX_CHARSET_RATIO
- モード
-
READ
- 説明
-
サーバー・キャラクタ・セットからクライアント・キャラクタ・セットへの最大キャラクタ・セット拡張率を戻します。サーバーとクライアント間のキャラクタ・セットが異なる場合に、これらの属性を使用すると便利です。これにより、変換の前に最適なメモリー・バッファを割り当てることができるため、データがデータベースから戻されたときにそれを保持するための十分な領域を割り当てることができます。
- 属性のデータ型
-
ub4 *
- 例
size_t cratio; OCIAttrGet((void *)svchp, (ub4)OCI_HTYPE_SVCCTX, (size_t *)&cratio, (ub4) 0, OCI_ATTR_MAX_CHARSET_RATIO, errhp); printf("Conversion ratio from server to client character set is %d\n", cratio);
OCI_ATTR_MAX_NCHARSET_RATIO
- モード
-
READ
- 説明
-
サーバー・キャラクタ・セットから各国語クライアント・キャラクタ・セットへの最大キャラクタ・セット拡張率を戻します。サーバーとクライアント間の各国語キャラクタ・セットが異なる場合に、これらの属性を使用すると便利です。これにより、変換の前に最適なメモリー・バッファを割り当てることができるため、データがデータベースから戻されたときにそれを保持するための十分な領域を割り当てることができます。
- 属性のデータ型
-
ub4 *
- 例
size_t cratio; OCIAttrGet((void *)svchp, (ub4)OCI_HTYPE_SVCCTX, (size_t *)&cratio, (ub4) 0, OCI_ATTR_MAX_NCHARSET_RATIO, errhp); printf("Conversion ratio from server to client ncharset is %d\n", cratio);
OCI_ATTR_SERVER
OCI_ATTR_SESSION
OCI_ATTR_STMTCACHE_CBK
- モード
-
READ/WRITE
- 説明
-
OCISvcCtx
ハンドルでアプリケーションのコールバック関数を取得および設定するために使用します。OCISvcCtx
で登録すると、この関数は、このサービス・コンテキストに属する文キャッシュ内の文が削除されたとき、またはセッションの終了時にコールされます。コールバック関数は、次のプロトタイプのものであることが必要です。
sword (*OCICallbackStmtCache)(void *ctx, OCIStmt *stmt, ub4 mode)
ctx
: IN引数。これは、アプリケーションが現行の文ハンドルで設定したコンテキストと同じです。stmt
: IN引数。これは、キャッシュから削除された文ハンドルです。mode
: IN引数。これは、コールバック関数がコールされているモードです。現在は、OCI_CBK_STMTCACHE_STMTPURGE
という1つの値のみがサポートされており、これは、コールバックが、現行の文の削除中にコールされていることを意味します。 - 属性のデータ型
sword (*OCICallbackStmtCache)(void *ctx, OCIStmt *stmt, ub4 mode)
OCI_ATTR_STMTCACHESIZE
OCI_ATTR_TRANS
OCI_ATTR_VARTYPE_MAXLEN_COMPAT
A.5 サーバー・ハンドル属性
サーバー・ハンドル属性をリストし、説明します。
サーバー・ハンドルには、次の属性を使用します。
OCI_ATTR_ACCESS_BANNER
OCI_ATTR_BREAK_ON_NET_TIMEOUT
OCI_ATTR_ENV
OCI_ATTR_EXTERNAL_NAME
- モード
-
READ/WRITE
- 説明
-
外部名は、
sys.props$.value$
に格納されているわかりやすいグローバル名です(ここで、name = 'GLOBAL_DB_NAME'
)。この名前は、すべてのデータベースがネットワーク・ディレクトリ・サービスで名前を登録していないかぎり、一意であることは保証されません。分散トランザクションを調整する場合に、データベース名をサーバーと交換できます。サーバー・データベース名には、
OCISessionBegin()
コールの発行時、データベースがオープンされていた場合のみ、アクセスすることができます。 - 属性のデータ型
-
oratext **
/oratext *
OCI_ATTR_FOCBK
OCI_ATTR_INTERNAL_NAME
OCI_ATTR_INSTNAME
サーバー・ハンドル属性としての使用方法の詳細は、「シャード・インスタンス記述子属性」のOCI_ATTR_INSTNAME
属性を参照してください。
OCI_ATTR_IN_V8_MODE
OCI_ATTR_NONBLOCKING_MODE
- モード
-
READ/WRITE
- 説明
-
この属性は、ブロック化モードを判断します。サーバー・コンテキストが非ブロック化モードの場合、読取り時にこの属性値は
TRUE
を戻します。設定すると、非ブロック化モード属性が切り替えられます。この属性を設定できるのは、OCISessionBegin()
またはOCILogon2()
がコールされた後でのみです。そうでない場合は、エラーが戻されます。 - 属性のデータ型
-
ub1 */ub1
関連項目:
OCI_ATTR_RECEIVE_TIMEOUT
OCI_ATTR_SEND_TIMEOUT
OCI_ATTR_SERVER_GROUP
OCI_ATTR_SERVER_STATUS
- モード
-
READ
- 説明
-
軽量接続状態チェックを実行して、接続の現在のステータスを戻します。値は次のとおりです。
-
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");
OCI_ATTR_TAF_ENABLED
OCI_ATTR_USER_MEMORY
A.5.1 認証情報ハンドル属性
認証情報ハンドル属性をリストし、説明します。
これらの属性は、ユーザー・セッション・ハンドルにも適用されます。
関連項目:
OCI_ATTR_FIXUP_CALLBACK
- モード
-
READ/WRITE
- 説明
-
OCISessionPoolを使用しないアプリケーションまたはカスタム・プールを使用するアプリケーションでは、認証ハンドルの属性で
OCISessionGet()
に渡されるコールバックを指定します。OCISessionPoolを使用するアプリケーションでは、この属性は、認証ハンドルで設定し、次にそれを属性OCI_ATTR_SPOOL_AUTH
としてセッション・プール・ハンドルで設定する必要があります。関連項目:
-
詳細は、「セッション・プール・ハンドル属性」を参照してください
-
詳細は、「セッション状態の修正のためのPL/SQLコールバック」を参照してください。
-
- 属性のデータ型
-
schma.package.callback_function
形式で提供されるoratext *
A.5.2 ユーザー・セッション・ハンドル属性
ユーザー・セッション・ハンドル属性をリストし、説明します。
次のユーザー・セッション・ハンドル属性は、認証情報ハンドルにも適用されます。
OCI_ATTR_ACTION
OCI_ATTR_APPCTX_ATTR
注意:
この属性は、データベース常駐接続プーリングではサポートされません。
OCI_ATTR_APPCTX_LIST
注意:
この属性は、データベース常駐接続プーリングではサポートされません。
OCI_ATTR_APPCTX_NAME
注意:
この属性は、データベース常駐接続プーリングではサポートされません。
OCI_ATTR_APPCTX_SIZE
注意:
この属性は、データベース常駐接続プーリングではサポートされません。
OCI_ATTR_APPCTX_VALUE
注意:
この属性は、データベース常駐接続プーリングではサポートされません。
OCI_ATTR_AUDIT_BANNER
OCI_ATTR_AUTOTUNING_ENABLED
OCI_ATTR_CALL_TIME
OCI_ATTR_CERTIFICATE
OCI_ATTR_CLIENT_IDENTIFIER
- モード
-
WRITE
- 説明
-
セッション・ハンドルにユーザー識別子を指定します。64バイト以下で指定できます。指定された入力が64バイトを超えると、値は自動的に切り捨てられます。ユーザー名を含めることはできますが、セキュリティ上の理由から、パスワードを含めることはできません。識別子の最初の文字に':'は使用できません。この文字を使用すると、予期しない動作が発生する場合があります。
- 属性のデータ型
-
oratext *
- 例
OCIAttrSet(session, OCI_HTYPE_SESSION,(void *)"janedoe", (ub4)strlen("janedoe"), OCI_ATTR_CLIENT_IDENTIFIER, error_handle);
OCI_ATTR_CLIENT_INFO
OCI_ATTR_COLLECT_CALL_TIME
OCI_ATTR_CONNECTION_CLASS
OCI_ATTR_CURRENT_SCHEMA
- モード
-
READ/WRITE
- 説明
-
スキーマ名とセッションが存在する場合、この属性を使用して
OCIAttrSet()
をコールすることで、SQLコマンドALTER
SESSION
SET
CURRENT_SCHEMA
と同じ結果が得られます。スキーマはサーバーへのラウンドトリップを行う次のOCIコールで変更され、余分なラウンドトリップが回避されます。新しいスキーマ名が存在しない場合、ALTER
SESSION
SET
CURRENT_SCHEMA
から戻されるエラーと同じエラーが戻されます。その後入力するDMLまたはDDLコマンド内で、データベース・オブジェクトの前にこの新しいスキーマ名が入ります。この属性を使用しているクライアントがOracle Database 10gリリース2よりも前のソフトウェア・リリースのサーバーと通信を行うと、
OCIAttrSet()
コールは無視されます。この属性はOCIAttrGet()
でも読み取ることができます。 - 属性のデータ型
-
oratext */oratext *
- 例
text schema[] = "hr"; err = OCIAttrSet( (void ) mysessp, OCI_HTYPE_SESSION, (void *)schema, (ub4)strlen( (char *)schema), OCI_ATTR_CURRENT_SCHEMA, (OCIError *)myerrhp);
OCI_ATTR_DBOP
OCI_ATTR_DEFAULT_LOBPREFETCH_SIZE
OCI_ATTR_DISTINGUISHED_NAME
OCI_ATTR_DRIVER_NAME
- モード
-
READ/WRITE
- 説明
-
JDBC、ODBC、PHP、SQL*PlusなどのOCIを使用するドライバ・レイヤーの名称を指定します。ORA$で始まる名称も予約済です。今後のアプリケーションでは、固有の名称を選択し、障害診断に役立つように設定できます。この属性は、
OCISessionBegin()
を実行する前に設定してください。NULL終端文字を含めて最大9個のシングルバイト文字による配列を渡します。このデータは検証されず、サーバーに直接渡されてV$SESSION_CONNECT_INFO
またはGV$SESSION_CONNECT_INFO
ビューに表示されます。OCIは、これらのビューに表示される、30文字までのドライバ名を受け入れます。古いデータベースの場合は、先頭の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); ...
OCI_ATTR_EDITION
OCI_ATTR_INITIAL_CLIENT_ROLES
OCI_ATTR_LTXID
OCI_ATTR_MAX_OPEN_CURSORS
- モード
-
READ
- 説明
-
1つのセッションでオープン可能なSQL文の最大数です。この値は、サーバーのパラメータ・ファイルで
open_cursors
パラメータを使用して設定します。サーバーでも内部文(カーソル)をユーザー・コールの処理の一部としてオープンできるため、OCIユーザーは一部のしきい値を残し、この制限に達しないようにしておく必要があります。アプリケーションでこの属性を使用して、指定セッションでオープンした文ハンドルの数を制限するように設定できます。この属性は、12.1以上のサーバーに接続される場合にのみ適切な値を戻します。サーバー・セッションのカーソルがオープン・カーソル設定を超える場合、最大カーソル値を超えたことを伝えるエラーがサーバーからクライアントに戻されます。
また、この値は
OCISessionGet()
または同等のログイン・コールが行われた後でのみ、セッション・ハンドルから読み取られるようにする必要があります。 - 属性のデータ型
-
ub4 *
- 例
OCIAttrGet((void *)usrhp, OCI_HTYPE_SESSION, (void *)&ub4localvariable, (ub4 *)0, OCI_ATTR_MAX_OPEN_CURSORS, errhp);
OCI_ATTR_MIGSESSION
- モード
-
READ/WRITE
- 説明
-
セッション・ハンドル用に識別されたセッションを指定します。同じプロセス内または複数プロセス間で、セッションをある環境から別の環境へ複製することができます。これは、同じシステム上のプロセスでも異なるシステム上のプロセスでも可能です。複製するセッションは、移行可能と認証されている必要があります。
関連項目:
- 属性のデータ型
-
ub1 *
- 例
-
次のコード例で、この属性の使用方法を示します。
OCIAttrSet ((void *) authp, (ub4)OCI_HTYPE_SESSION, (void *) mig_session, (ub4) sz, (ub4)OCI_ATTR_MIGSESSION, errhp);
OCI_ATTR_MODULE
OCI_ATTR_ORA_DEBUG_JDWP
- モード
-
WRITE
- 説明
-
ログイン後にデータベース・セッションの接続先となる外部デバッガの場所を指定します。これにより、ユーザーは、データベース・アプリケーションのデバッグを開始できます。
属性の書式は、セミコロンで区切られたパラメータの名前と値のリストです。パラメータは、
DBMS_ DEBUG_JDWP_CUSTOM.CONNECT_DEBUGGER
パッケージAPIに渡され、データベース・セッションがデバッガに接続されます。パラメータ名として、引用符付きまたは引用符なしのPL/SQL識別子を使用できます。パラメータ値は、一重引用符で囲むか、引用符なしの文字列で、セミコロンで終了します。引用符付き文字列で一重引用符をエスケープするには、2つの連続した一重引用符を使用します。パラメータ名とその値の間にはどこにも空白を挿入することはできません。属性には、少なくとも
host
およびport
パラメータを含める必要があり、デバッガが実行されるコンピュータのインターネット・プロトコルのドット付きアドレスまたはホスト名と、デバッグ接続でデバッガがリスニングするTCPポート番号を指定します。 - 属性のデータ型
-
oratext *
- 例
OCIAttrSet(session, OCI_HTYPE_SESSION, (void *)"janedoe", (ub4)strlen("janedoe"), OCI_ATTR_CLIENT_IDENTIFIER, error_handle);
OCI_ATTR_PASSWORD
OCI_ATTR_PROXY_CLIENT
OCI_ATTR_PROXY_CREDENTIALS
OCI_ATTR_PURITY
- モード
-
READ/WRITE
- 説明
-
データベース常駐接続プーリング用の
OCIAuthInfo
ハンドルの属性です。値は、OCI_ATTR_PURITY_NEW
(アプリケーションでは前のセッション状態で保持されていないセッションが必要)またはOCI_ATTR_PURITY_SELF
(セッションが前に使用済でも可)です。OCISessionGet()
のコール時にアプリケーションで純正値が指定されていない場合、純正値OCI_ATTR_PURITY_DEFAULT
が使用されます。この値は、後でアプリケーション・ロジックの設定(新しいセッションを使用するか、プールされたセッションを再利用するか)に応じてOCI_ATTR_PURITY_NEW
またはOCI_ATTR_PURITY_SELF
に変換されます。 - 属性のデータ型
-
ub4 */ub4
OCI_ATTR_SESSION_STATE
- モード
-
READ/WRITE
- 説明
-
データベース・セッションの現在の状態を指定します。セッションがデータベース・タスクを実行する必要がある場合は、
OCI_SESSION_STATEFUL
に設定します。後続のデータベース・アクティビティに対して、アプリケーションが現行のセッションに依存していない場合は、OCI_SESSION_STATELESS
に設定します。現在この属性が適用できるのは、データベース常駐接続プールに接続している場合のみです。この属性は、アプリケーションがカスタム・セッション・プーリングを実行しているが、OCISessionPool()
は使用していない場合に使用します。 - 属性のデータ型
-
ub1 */ ub1
OCI_ATTR_SHARDING_KEY
- モード
-
WRITE
- 説明
-
シャードおよびチャンクで、OCIセッション・プールまたはスタンドアロン接続からの接続要求に対してシャーディング・キーを指定します。
OCIDescriptorAlloc()
でシャーディング記述子を指定し、次に複合シャーディング・キーを作成するためにOCIShardingKeyColumnAdd()
で必要な回数のコールを使用して、OCIAttrSet()
に提供されるOCIShardingKey *
を作成する必要があります。詳細および例は、「OCIShardingKeyColumnAdd()」を参照してください。カスタム・プールでは、この属性はシャーディング・キーを特定の接続に関連付けます。
- 属性のデータ型
-
OCIShardingKey *
- 例
/* Allocate the super sharding key descriptor. */ OCIDescriptorAlloc(envhp,(dvoid **)&shardKey, OCI_DTYPE_SHARDING_KEY, 0,(dvoid **)0))) text *name = “KK”; text *gname = “GOLD”; int empid = 150; /* Add all the columns of the key to form the final shard key. */ OCIShardingKeyColumnAdd(shardKey,(ub1*)&empid, sizeof(empid), SQLT_INT, errhp, OCI_DEFAULT); OCIShardingKeyColumnAdd(shardKey, name, strlen(name), SQLT_CHAR, errhp, OCI_DEFAULT)); OCIShardingKey *shardKey; OCIAttrSet(authp, OCI_HTYPE_AUTHINFO, shardKey, sizeof(shardKey), OCI_ATTR_SHARDING_KEY, errhp);
OCI_ATTR_SHARDING_KEY_B64
OCI_ATTR_SUPER_SHARDING_KEY
- モード
-
WRITE
- 説明
-
シャードおよびチャンクのグループで、OCIセッション・プールまたはスタンドアロン接続からの接続要求に対してスーパー・シャーディング・キーを指定します。
OCIDescriptorAlloc()
でシャーディング記述子を指定し、次に複合シャード・キーを作成するためにOCIShardingKeyColumnAdd()
で必要な回数のコールを使用して、OCIAttrSet()
に提供されるOCIShardingKey *
を作成する必要があります。詳細および例は、「OCIShardingKeyColumnAdd()」を参照してください。カスタム・プールでは、この属性はシャード・グループ・キーを特定の接続に関連付けます。
- 属性のデータ型
-
OCIShardingKey *
- 例
/* Allocate the sharding key descriptor. */ OCIDescriptorAlloc(envhp,(dvoid **)&shardGroupKey, OCI_DTYPE_SHARDING_KEY, 0, (dvoid **)0)); /* Add the column of the key to form the final super sharding key. */ OCIShardingKeyColumnAdd(shardGroupKey, errhp, gname, strlen(gname), SQLT_CHAR, OCI_DEFAULT)); OCIShardingKey *shardGroupKey; OCIAttrSet(authp, OCI_HTYPE_AUTHINFO, shardGroupKey, sizeof(shardGroupKey), OCI_ATTR_SUPER_SHARDING_KEY, errhp));
OCI_ATTR_TRANS_PROFILE_FOREIGN
OCI_ATTR_TRANSACTION_IN_PROGRESS
OCI_ATTR_USERNAME
A.7 接続プール・ハンドル属性
接続プール・ハンドル属性をリストし、説明します。
OCI_ATTR_CONN_TIMEOUT
注意:
プールの縮小は、ネットワーク・ラウンドトリップがある場合にのみ発生します。操作がない場合、接続はアクティブなままになります。
OCI_ATTR_CONN_NOWAIT
OCI_ATTR_CONN_BUSY_COUNT
OCI_ATTR_CONN_OPEN_COUNT
OCI_ATTR_CONN_MIN
OCI_ATTR_CONN_MAX
OCI_ATTR_CONN_INCR
A.7.1 セッション・プール・ハンドル属性
セッション・プール・ハンドル属性をリストし、説明します。
セッション・プール・ハンドルには、次の属性を使用します。
OCI_ATTR_SPOOL_AUTH
- モード
-
WRITE
- 説明
-
セッション・プールから取得されているセッションでセッション作成前属性を有効にする場合、この属性は、セッション・プール・ハンドルで設定できます。現在、この
OCIAuthInfo
ハンドルで設定できるのは、次の属性のみです。OCI_ATTR_DRIVER_NAME
OCI_ATTR_EDITION
OCI_ATTR_FIXUP_CALLBACK
他の属性が
OCIAuthInfo
ハンドルに設定され、OCIAuthInfo
ハンドルがセッション・プール・ハンドルに設定されると、エラーが発生します。さらに、OCIAuthInfo
ハンドルをセッション・プール・ハンドルに設定するには、セッション・プール・ハンドルでOCISessionPoolCreate()
をコールする前に行う必要があります。OCISessionPoolCreate()
の後にこれを設定すると、エラーになります。 - 属性のデータ型
-
OCIAuthInfo *
OCI_ATTR_SPOOL_BUSY_COUNT
OCI_ATTR_FOCBK
OCI_ATTR_SPOOL_GETMODE
- モード
-
READ/WRITE
- 説明
-
この属性は、プール内のすベてのセッションがビジーでいくつかのセッションが最大に達しているか、プールが新しい接続を作成する必要があることが判明したときに、セッション・プールの動作を判断します。値は次のとおりです。
-
OCI_SPOOL_ATTRVAL_WAIT
- スレッドはセッションが解放されるか、新しいセッションが作成されるまでブロックされて待機します。これはデフォルト値です。 -
OCI_SPOOL_ATTRVAL_TIMEDWAIT
-OCI_ATTR_SPOOL_WAIT_TIMEOUT
によって設定されたタイムアウトの期限が切れるまで、使用可能なセッションに対する内部的な試行を続けます。 -
OCI_SPOOL_ATTRVAL_NOWAIT
- 使用可能な接続がない場合、またはプールが新しい接続を作成する必要がある場合は、エラーが戻されます。 -
OCI_SPOOL_ATTRVAL_FORCEGET
- すべてのセッションがビジーで、セッション数が最大に達している場合でも、新しいセッションを作成します。OCISessionGet()
によって警告が戻されます。この場合、OCISessionGet()
が警告を戻すのは、新規作成のセッションがセッションの最大数を超えた場合です。この値を設定した場合は、Oracle Databaseのインスタンスでサポートできるセッション数よりも多いセッションが作成される可能性があります。この場合は、次のエラーがサーバーから戻されます。
ORA 00018 - Maximum number of sessions exceeded
このエラーは、セッション・プールのユーザーに伝播されます。
読取りの場合は、適切な属性値が戻されます。
-
- 属性のデータ型
-
ub1 */ ub1
OCI_ATTR_SPOOL_INCR
OCI_ATTR_SPOOL_MAX
OCI_ATTR_SPOOL_MAX_LIFETIME_SESSION
OCI_ATTR_SPOOL_MAX_USE_SESSION
OCI_ATTR_SPOOL_MIN
OCI_ATTR_SPOOL_OPEN_COUNT
OCI_ATTR_SPOOL_STMTCACHESIZE
OCI_ATTR_SPOOL_TIMEOUT
- モード
-
READ/WRITE
- 説明
-
この時間(秒)を超えてアイドル状態のセッションは定期的に終了し、オープンしているセッション数が最適に維持されます。この属性は動的に設定できます。この属性が設定されておらず、プール内に領域が必要な場合は、最低使用頻度のセッションがタイムアウトとなります。OCIでは、プールに解放するときにのみ、タイムアウトしたセッションがチェックされます。詳細は、「OCI_ATTR_SPOOL_MAX_LIFETIME_SESSION」を参照してください。
- 属性のデータ型
-
ub4 */ ub4
OCI_ATTR_SPOOL_WAIT_TIMEOUT
OCI_ATTR_SPOOL_MAX_PER_SHARD
A.8 トランザクション・ハンドル属性
トランザクション・ハンドル属性をリストし、説明します。
トランザクション・ハンドルには、次の属性を使用します。
OCI_ATTR_TRANS_NAME
OCI_ATTR_TRANS_TIMEOUT
OCI_ATTR_XID
A.9 文ハンドル属性
文ハンドル属性をリストし、説明します。
文ハンドルには、次の属性を使用します。
OCI_ATTR_BIND_COUNT
- モード
-
READ
- 説明
-
文ハンドルのバインド位置の数を戻します。
- 属性のデータ型
-
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);
OCI_ATTR_CHNF_REGHANDLE
OCI_ATTR_CQ_QUERYID
OCI_ATTR_CURRENT_POSITION
OCI_ATTR_ENV
OCI_ATTR_FETCH_ROWID
OCI_ATTR_IMPLICIT_RESULT_COUNT
OCI_ATTR_NUM_DML_ERRORS
OCI_ATTR_PARAM_COUNT
- 例
... 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 data type of each column. You 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)); } ...
OCI_ATTR_PARSE_ERROR_OFFSET
OCI_ATTR_PREFETCH_MEMORY
OCI_ATTR_PREFETCH_ROWS
OCI_ATTR_ROW_COUNT
- モード
-
READ
- 説明
-
SELECT
文の後、これまでに処理した行の数を戻します。INSERT
、UPDATE
およびDELETE
文の場合、最後の文によって処理された行の数を戻します。デフォルト値は1です。スクロール不可カーソルの場合、
OCI_ATTR_ROW_COUNT
は、この文ハンドルの実行後にOCIStmtFetch2()
コールでユーザー・バッファにフェッチされた行の合計数です。スクロール不可カーソルは前方への順次アクセスのみであるため、この属性は、アプリケーションで参照する最後の行番号を表します。スクロール・カーソルの場合、
OCI_ATTR_ROW_COUNT
は、ユーザー・バッファにフェッチされた行の最大(絶対)数を表します。アプリケーションでは、任意の位置でフェッチを行うことができるため、この属性は、(スクロール可能な)文の実行後にユーザーのバッファにフェッチされた行の合計数である必要はありません。Oracle Databaseリリース12.1より、行カウント値がOCIアプリケーションの
UB4MAXVAL
の値を超えてもよい場合は、OCI_ATTR_ROW_COUNT
属性よりもOCI_ATTR_UB8_ROW_COUNT
属性をお薦めします。行カウントがUB4MAXVAL
の値を超え、アプリケーションでOCI_ATTR_ROW_COUNT
属性が使用される場合、OCIAttrGet()
を使用するコールでエラーが戻されます。 - 属性のデータ型
-
ub4 *
OCI_ATTR_DML_ROW_COUNT_ARRAY
- モード
-
READ
- 説明
-
配列DML文の各反復により影響を受ける行カウントの配列を戻します。反復iの行カウントは、配列[i-1]を参照することによって取得できます。
OCI_BATCH_ERRORS
モードがない場合、OCIStmtExecute()は最初の反復エラーで実行を停止します。そのような場合、OCI_ATTR_DML_ROW_COUNT_ARRAY
属性で戻された配列には、最後の正常な反復以前の行カウントのみが含まれます。OCI_RETURN_ROW_COUNT_ARRAY
モードがOCI_BATCH_ERRORS
モードとともに使用される場合、戻される行カウント配列には正常な反復ごとに影響を受けた実際の行数と、エラーで戻された反復を示す0(ゼロ)が含まれます。この属性は、文がOCIStmtExecute()の使用時に
OCI_RETURN_ROW_COUNT_ARRAY
モードで実行される場合にのみ機能します。この属性は、配列DML操作後、OCIStmtExecute()で
OCI_RETURN_ROW_COUNT_ARRAY
モードを使用する間にのみ使用します。その他の操作(配列DML以外)後、またはこのモードを渡さずにこの属性の問合せを実行しようとすると、
OCI_ERROR
(ORA-24349
)が発生します。 - 属性のデータ型
-
ub8 *
- 例
int deptarray[]={10,20,30}; int iters = 3; ub8 *rowcounts; ub4 rowCountArraySize; /*Statement prepare */ text *updatesal = (text *)"UPDATE EMP set sal = sal+100 where deptno = :dept" OCIStmtPrepare2 ((OCISvcCtx *)svchp,(OCIStmt **)&stmthp, (OCIError *)errhp, (text *)updatesal, (ub4)sizeof(updatesal)-1, (oratext *)NULL, (ub4) 0, (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT); /*Array bind*/ OCIBindByPos (stmthp, &bndhp, errhp, 1, deptarray, sizeof(deptarray[0]), SQLT_INT, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4) 0, (ub4 *) 0, (ub4) OCI_DEFAULT); /* Pass new MODE for Array DML rowcounts; also, if an error occurred for any iteration and you want to get the number of rows updated for the rest of the iterations.*/ OCIStmtExecute(svchp, stmthp, errhp, iters, (ub4) 0, 0, 0, OCI_BATCH_ERRORS | OCI_RETURN_ROWCOUNT_ARRAY); OCIAttrGet (stmthp, (ub4) OCI_HTYPE_STMT, (ub8 *)&rowcounts, &rowCountArraySize, OCI_ATTR_DML_ROW_COUNT_ARRAY, errhp);
OCI_ATTR_ROWID
OCI_ATTR_ROWS_FETCHED
OCI_ATTR_SQL_ID
- モード
-
READ
- 説明
-
サーバーから特定のSQL文の
SQL_ID
を取得し、それをクライアントの文ハンドルで使用できるようにします。 - 属性のデータ型
-
ub4 *
- 例
-
OCIStmtPrepare2()
で、モードとしてOCI_PREP2_GET_SQL_ID
を指定します。このOCI_PREP2_GET_SQL_ID
モードは、他のモードとORで連結する必要があります。たとえば、次のようにします。OCIStmtPrepare2((dvoid *)ctxptr->svchp, &stmthp, (dvoid *)ctxptr->errhp, insStmt, sizeof(insStmt), (const oratext *)0, (ub4)0, OCI_NTV_SYNTAX, OCI_DEFAULT | OCI_PREP2_GET_SQL_ID);
バインドまたは定義操作を実行してから、文を実行できます。
次のコード例は、
SQL_ID
を取得する方法を示しています。ub4 sqlidLen; oratext *sqlid; OCIAttrGet(stmthp, OCI_HTYPE_STMT, &sqlid, (ub4 *)&sqlidLen, OCI_ATTR_SQL_ID, ctxptr->errhp);
OCI_ATTR_SQLFNCODE
- モード
-
READ
- 説明
-
文に対応付けられたSQLコマンドの関数コードを戻します。
- 属性のデータ型
-
ub2 *
- 注意
-
表A-1は、SQLコマンド・コードのリストを示しています。
表A-1 SQL文に対応する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 |
OCI_ATTR_STATEMENT
OCI_ATTR_STMTCACHE_CBKCTX
OCI_ATTR_STMT_IS_RETURNING
OCI_ATTR_STMT_STATE
OCI_ATTR_STMT_TYPE
OCI_ATTR_UB8_ROW_COUNT (OCI_ATTR_ROW_COUNTよりも推奨)
- モード
-
READ
- 説明
-
SELECT
文の場合、結果セットからフェッチされた行の累計数を戻します。INSERT
、UPDATE
およびDELETE
文の場合、この属性はこの文によって処理された行の数を戻します。デフォルト値は1です。スクロール不可カーソルの場合、
OCI_ATTR_UB8_ROW_COUNT
は、この文ハンドルの実行後にOCIStmtFrtch()
またはOCIStmtFetch2()コールでユーザー・バッファにフェッチされた行の合計数です。これらのスクロール不可カーソルの場合、これはアプリケーションで表示される最大行数も示します。OCI_ATTR_ROW_COUNT
属性を使用し、戻される行カウントがUB4MAXVAL
よりも大きい場合、次のエラーのいずれかまたは両方が戻される可能性があります。ORA-03148. OCI_ATTR_ROW_COUNT cannot see row counts larger than UB4MAXVAL
- 属性のデータ型
-
ub8 *
A.10 バインド・ハンドル属性
バインド・ハンドル属性をリストし、説明します。
バインド・ハンドルには、次の属性を使用します。
OCI_ATTR_CHAR_COUNT
OCI_ATTR_CHARSET_FORM
OCI_ATTR_CHARSET_ID
- モード
-
READ/WRITE
- 説明
-
バインド・ハンドルのキャラクタ・セットIDです。入力データのキャラクタ・セットがUTF-16である場合、ユーザーは、キャラクタ・セットIDを
OCI_UTF16ID
に設定する必要があります(下位互換性のために保持されている非推奨のOCI_UC2SID
を置き換えます)。バインド値バッファはutext
バッファであるとみなされ、入力長ポインタおよび戻り値の長さセマンティクスは、キャラクタ・セマンティクス(utext
の数)に変更されます。ただし、先行するOCIBind
コールでは、バインド値バッファのサイズをバイト単位で指定する必要があります。OCI_ATTR_CHARSET_ID
は、OCI_ATTR_CHARSET_FORM
(設定する場合)の後に設定する必要があります。OCI_ATTR_CHARSET_FORM
を設定する前にOCI_ATTR_CHARSET_ID
を設定すると、予想しない結果になります。関連項目:
- 属性のデータ型
-
ub2 *
OCI_ATTR_COLLATION_ID
- モード
-
READ/WRITE
- 説明
-
SQL文内のこのバインド・ハンドルに対応するプレースホルダ式の導出された照合を設定します。属性は文字データ型を使用したバインド変数にのみ関連します。
バインド変数ハンドルで
OCI_ATTR_COLLATION_ID
属性を、サポートされている照合IDのいずれかに設定できます。名前付き照合および疑似照合の両方の照合IDが許可されています。属性値は、他のバインド情報を使用してサーバーに渡され、対応するバインド変数参照(正式にはSQLプレースホルダ式と呼ばれる)は、強制可能レベル0で指定された照合とみなされます。属性値がOCI_COLLATION_NONE
(デフォルト値)である場合、バインド変数の照合は、強制可能レベル4のUSING_NLS_COMP
です。OCIでは、照合がバインド変数の特定のデータ型に対して有効かどうかはチェックされません。
OCI_ATTR_COLLATION_ID
が文字以外のデータ型の変数に設定されている場合、これはサーバーから無視されます。バインド変数の照合は、現在、PL/SQL式では無視されます。上位互換性の理由から、匿名PL/SQLブロックに渡されるバインド変数がSQL文で排他的に参照される場合を除き、
OCI_ATTR_COLLATION_ID
属性はこの変数に設定しないでください。注意:
SQLの組込みファンクションの
NLS_COLLATION_ID
およびNLS_COLLATION_NAME
を使用して、照合IDである属性の値と、SQL構文で使用される照合名とをマップできます。関連項目:
-
このセット照合が問合せ処理に与える影響についての詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。
- 属性のデータ型
-
ub4 *
OCI_ATTR_MAXCHAR_SIZE
OCI_ATTR_MAXDATA_SIZE
OCI_ATTR_PDPRC
OCI_ATTR_PDSCL
OCI_ATTR_ROWS_RETURNED
A.11 定義ハンドル属性
定義ハンドル属性をリストし、説明します。
定義ハンドルには、次の属性を使用します。
OCI_ATTR_CHAR_COUNT
OCI_ATTR_CHARSET_FORM
OCI_ATTR_CHARSET_ID
- モード
-
READ/WRITE
- 説明
-
定義ハンドルのキャラクタ・セット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 *
OCI_ATTR_LOBPREFETCH_LENGTH
OCI_ATTR_LOBPREFETCH_SIZE
OCI_ATTR_MAXCHAR_SIZE
OCI_ATTR_PDPRC
OCI_ATTR_PDSCL
A.12 記述ハンドル属性
記述ハンドル属性をリストし、説明します。
記述ハンドルには、次の属性を使用します。
OCI_ATTR_PARAM
- モード
-
READ
- 説明
-
記述のルートを指し示します。後続のOCIAttrGet()およびOCIParamGet()コールのために使用します。
- 属性のデータ型
-
ub4 *
OCI_ATTR_PARAM_COUNT
OCI_ATTR_SHOW_INVISIBLE_COLUMNS
- モード
-
WRITE
- 説明
-
この属性は、非表示列のメタデータも取得するようにOCIDescribeAny()を要求します。OCIAttrGet()を使用して、列が非表示かどうかを判断できます。
- 属性のデータ型
-
boolean *
- 例
boolean showInvisibleCols = TRUE; ub1 colInvisible[MAX_COLS]; OCIAttrSet(descHandle, OCI_HTYPE_DESCRIBE, &showInvisibleCols, 0, OCI_ATTR_SHOW_INVISIBLE_COLUMNS, errHandle); if (rc = OCIDescribeAny(svcHandle, errHandle, (dvoid*)table, strlen(table), OCI_OTYPE_NAME, 1, OCI_PTYPE_TABLE, descHandle)) { OCIHandleFree(descHandle, OCI_HTYPE_DESCRIBE); return OCI_ERROR; } /* Get the number of columns. */ OCIAttrGet(parHandle, OCI_DTYPE_PARAM, &nCols, 0, OCI_ATTR_NUM_COLS, errHandle); /* Get the column list. */ OCIAttrGet(parHandle, OCI_DTYPE_PARAM, &lstHandle, 0, OCI_ATTR_LIST_COLUMNS, errHandle); /* Loop through the columns. */ for (i = 1; i <= nCols; i++) { OCIParamGet(lstHandle, OCI_DTYPE_PARAM, errHandle, (dvoid*)&colHandle, i); OCIAttrGet(colHandle, OCI_DTYPE_PARAM, &colName[i-1], &len, OCI_ATTR_NAME, errHandle); OCIAttrGet(colHandle, OCI_DTYPE_PARAM, &(colType[i-1]), 0, OCI_ATTR_DATA_TYPE, errHandle); OCIAttrGet(colHandle, OCI_DTYPE_PARAM, &colInvisible[i-1], 0, OCI_ATTR_SHOW_INVISIBLE_COLUMNS, errHandle); if (colInvisible & OCI_ATTR_SHOW_INVISIBLE_COLUMNS) printf("Column is invisible\n"); }
A.13 パラメータ記述子の属性
パラメータ記述子属性をリストし、説明します。
パラメータ記述子には、次の属性を使用します。
関連項目:
パラメータ記述子の属性の詳細なリストは、「スキーマ・メタデータの記述」を参照してください。
A.14 シャード・インスタンス記述子属性
シャード・インスタンス記述子属性をリストし、説明します。
この記述子は、カスタム・プールでのみ使用されるOCIShardInstancesGet()
によって戻され、基本的に、指定されたシャーディング・キーに一致するデータが存在するインスタンスの名前と、そのシャードがインスタンスで書込み可能であるかどうかに関する指示を含みます。
シャード・インスタンス記述子には、次の属性を使用します。
OCI_ATTR_INSTNAME
- モード
-
READ
- 説明
-
この属性を使用して、
OCIShardInstancesGet()
コールによって取得されるシャード・インスタンス記述子からシャード・インスタンス名を検出できます。この属性をサービス・コンテキストで使用して、指定された接続に対応するシャード・インスタンス名を戻すこともできます。イベント・ハンドル属性としてOCIAttrGet()
をコールすると、このイベントによる影響を受けたインスタンスの名前が取り出されます。これもサーバー・ハンドル属性です。 - 属性のデータ型
-
oratext **
- 例
OCIAttrGet(shardInstance, (ub4) OCI_DTYPE_SHARD_INST,(dvoid *)&iName, (ub4 *)&iNameLen, OCI_ATTR_INSTNAME, (OCIError *)errhp);
OCI_ATTR_SHARD_HAS_WRITABLECHUNK
- モード
-
READ
- 説明
-
シャード・インスタンスに書込み可能なチャンクが含まれる場合、
TRUE
を戻します。これは、カスタム・プール実装で、その特定のシャード・インスタンスに対する接続を割り当てることができるかどうかをプールで判断するために役立ちます。アプリケーションが、書込み可能なチャンクのかわりに読取り専用シャードを処理できる場合、プールではそれを割り当てることができます。それ以外の場合、書込み可能なチャンクを含むシャード・インスタンスの情報が戻されるまでOCIShardInstancesGet()
を試行する再試行ロジックを実装できます。この機能は、チャンク移行の際に役立ちます。 - 属性のデータ型
boolean *
A.15 SODAドキュメント・ハンドル属性
OCISodaDoc
ドキュメント・ハンドルには次の属性があります。キー、最終変更のタイムスタンプ、作成時のタイムスタンプ、バージョン、コンテンツおよびメディア・タイプの各属性は、ドキュメント・コンポーネントを表します。JSONキャラクタ・セットIDは、SODAによって設定される読取り専用のキャラクタ・セットIDです。JSONエンコーディングの検出は、UnicodeエンコーディングJSONコンテンツと連携するためのフラグです。
-
キー:
OCI_ATTR_SODA_KEY
-
最終変更のタイムスタンプ:
OCI_ATTR_SODA_LASTMOD_TIMESTAMP
-
作成時のタイムスタンプ:
OCI_ATTR_SODA_CREATE_TIMESTAMP
-
バージョン:
OCI_ATTR_SODA_VERSION
-
コンテンツ:
OCI_ATTR_SODA_CONTENT
-
メディア・タイプ(JSONドキュメントの場合は「application/json」):
OCI_ATTR_SODA_MEDIA_TYPE
-
JSONキャラクタ・セットID:
OCI_ATTR_SODA_JSON_CHARSET_ID
-
JSONエンコーディングの検出:
OCI_ATTR_SODA_DETECT_JSON_ENC
OCI_ATTR_SODA_KEY
OCI_ATTR_SODA_LASTMOD_TIMESTAMP
OCI_ATTR_SODA_CREATE_TIMESTAMP
OCI_ATTR_SODA_VERSION
OCI_ATTR_SODA_CONTENT
OCI_ATTR_SODA_JSON_CHARSET_ID
OCI_ATTR_SODA_DETECT_JSON_ENC
OCI_ATTR_SODA_MEDIA_TYPE
A.16 SODAコレクション・ハンドル属性
OCI SODAコレクション・ハンドル属性をリストし、説明します。
コレクション・メタデータは複数のコンポーネントから構成されます。OCI_ATTR_SODA_DESCRIPTOR
は特殊なケースです。OCI_ATTR_SODA_DESCRIPTOR
をOCIAttrGet()
に渡す場合は、1つのチャンク内のコレクションのメタデータをJSON形式で取得します。また、OCI_ATTR_SODA_COLL_NAME
、このコレクション名はコレクション・メタデータの一部ではありません(コレクション・メタデータ・コンポーネントではありません)。これは、SODAで別々に格納されるため、これも特殊なケースです。OCI_ATTR_SODA_DESCRIPTOR
を使用して、JSON内のコレクション・メタデータをフェッチする場合、コレクション名は含まれません。
これらの属性の残りは、個々のメタデータ・コンポーネントをフェッチします。それらは、便宜上、提供されます(または、OCI_ATTR_SODA_DESCRIPTOR
を使用してコレクション・メタデータを取得できます。メタデータにはすべてのコンポーネントが含まれていますが、JSON形式であるため、アプリケーションでは、JSONを解析し、特定のコンポーネントの値を取得することが必要な場合があります)。これらの属性はすべて、READ
専用であり、既存のコレクションのメタデータを確認できます。
関連項目:
これらのSODAコレクション・メタデータ・コンポーネントの参照情報については、Oracle Database: Simple Oracle Document Access (SODA)の概要を参照してください。これらのコレクション・ハンドル属性に対応するすべてのメタデータ・コンポーネント(OCI_ATTR_SODA_DESCRIPTOR
およびOCI_ATTR_SODA_COLL_NAME
を除く)が、この章で説明されています。
すべてのコレクション属性とそれぞれの説明を次にリストします。
-
コレクション名:
OCI_ATTR_SODA_COLL_NAME
-
記述子:
OCI_ATTR_SODA_DESCRIPTOR
-
スキーマ:
OCI_ATTR_SODA_SCHEMA
-
表名:
OCI_ATTR_SODA_TABLE_NAME
-
ビュー名:
OCI_ATTR_SODA_VIEW_NAME
-
キー列名:
OCI_ATTR_SODA_KEY_COL_NAME
-
キー列のSQLタイプ:
OCI_ATTR_SODA_KEY_SQL_TYPE
-
キー列の最大長:
OCI_ATTR_SODA_KEY_MAX_LEN
-
キー列の割当てメソッド:
OCI_ATTR_SODA_KEY_ASSIGN_METHOD
-
キー列の順序名:
OCI_ATTR_SODA_KEY_SEQ_NAME
-
コンテンツ列名:
OCI_ATTR_SODA_CTNT_COL_NAME
-
コンテンツ列のSQL型:
OCI_ATTR_SODA_CTNT_SQL_TYPE
-
コンテンツ列の最大長:
OCI_ATTR_SODA_CTNT_MAX_LEN
-
コンテンツ列のJSON検証:
OCI_ATTR_SODA_CTNT_VALIDATION
-
コンテンツ列のSecureFiles LOB圧縮:
OCI_ATTR_SODA_CTNT_COMPRESS
-
コンテンツ列のSecureFiles LOBキャッシュ:
OCI_ATTR_SODA_CTNT_CACHE
-
コンテンツ列のSecureFiles LOB暗号化:
OCI_ATTR_SODA_CTNT_ENCRYPT
-
バージョン列名:
OCI_ATTR_SODA_VERSION_COL_NAME
-
バージョン生成メソッド:
OCI_ATTR_SODA_VERSION_METHOD
-
最終変更のタイムスタンプの列名:
OCI_ATTR_SODA_MODTIME_COL_NAME
-
最終変更の列索引名:
OCI_ATTR_SODA_MODTIME_INDEX
-
作成時のタイムスタンプの列名:
OCI_ATTR_SODA_CRTIME_COL_NAME
-
メディア・タイプ列名:
OCI_ATTR_SODA_MTYPE_COL_NAME
-
読取り専用:
OCI_ATTR_SODA_READONLY
OCI_ATTR_SODA_COLL_NAME
OCI_ATTR_SODA_DESCRIPTOR
OCI_ATTR_SODA_SCHEMA
OCI_ATTR_SODA_TABLE_NAME
OCI_ATTR_SODA_VIEW_NAME
OCI_ATTR_SODA_KEY_COL_NAME
OCI_ATTR_SODA_KEY_SQL_TYPE
OCI_ATTR_SODA_KEY_MAX_LEN
- モード
-
READ
- 説明
-
キー列の最大長をバイト単位で指定します。このコンポーネントは
VARCHAR2
型のキーのみに適用されます。キーの割当てメソッドがUUID
またはGUID
の場合、32バイト以上。OCI_ATTR_SODA_KEY_ASSIGN_METHODを参照してください。 - 属性のデータ型
-
ub4
OCI_ATTR_SODA_KEY_ASSIGN_METHOD
- モード
-
READ
- 説明
-
コレクションに挿入するオブジェクトにキーを割り当てるために使用されるこのコンポーネント・メソッドの該当値にOCI値を指定します。
UUID
、GUID
、SEQUENCE
およびCLIENT
は、JSONメタデータに含まれる、このコンポーネントの有効な該当値です。この属性の有効な値は次のとおりです。-
UUID
の場合、OCI_SODA_KEY_METHOD_UUID
。これは、JSONメタデータに含まれる、このコンポーネントの該当値です。 -
GUID
の場合、OCI_SODA_KEY_METHOD_GUID
。これは、JSONメタデータに含まれる、このコンポーネントの該当値です。 -
SEQUENCE
の場合、OCI_SODA_KEY_METHOD_SEQUENCE
。これは、JSONメタデータに含まれる、このコンポーネントの該当値です。 -
CLIENT
の場合、OCI_SODA_KEY_METHOD_CLIENT
。これは、JSONメタデータに含まれる、このコンポーネントの該当値です。
-
- 属性のデータ型
-
ub1
OCI_ATTR_SODA_KEY_SEQ_NAME
- モード
-
READ
- 説明
-
キーの割当てメソッドがSEQUENCEの場合にコレクションに挿入するドキュメントのキーを生成するデータベース順序の名前を指定します。
注意:
OCI用のSODAを使用してコレクションをドロップする場合、キーの生成に使用する順序はドロップされません。これは、OCI用のSODAを使用してそれが作成されていない可能性があるためです。順序をドロップするには、最初にコレクションをドロップしてから、SQLコマンド
DROP SEQUENCE
を使用します。関連項目:
-
DROP SEQUENCE
の詳細は、『Oracle Database SQL言語リファレンス』を参照してください
- 属性のデータ型
-
oratext *
OCI_ATTR_SODA_CTNT_COL_NAME
OCI_ATTR_SODA_CTNT_SQL_TYPE
OCI_ATTR_SODA_CTNT_MAX_LEN
- モード
-
READ
- 説明
-
コンテンツ列の最大長をバイト単位で指定します。このコンポーネントは
VARCHAR2
型のコンテンツのみに適用されます。デフォルト値は4000バイトです。関連項目:
-
拡張データ型の詳細は、『Oracle Database SQL言語リファレンス』を参照してください
- 属性のデータ型
-
ub4
OCI_ATTR_SODA_CTNT_VALIDATION
- モード
-
READ
- 説明
-
JSONコンテンツが準拠する必要がある該当する構文にOCI値を指定します。この属性の有効な値は次のとおりです。
-
STRICT
の場合、OCI_SODA_JSON_VALIDATION_STRICT
。これは、JSONコレクション・メタデータに含まれる該当値です。STRICT
構文の詳細は、Oracle Database: Simple Oracle Document Access (SODA)の概要を参照してください。 -
LAX
の場合、OCI_COLL_JSON_VALIDATION_LAX
。これは、JSONコレクション・メタデータに含まれる該当値です。LAX
構文の詳細は、Oracle Database: Simple Oracle Document Access (SODA)の概要を参照してください。 -
STANDARD
の場合、OCI_SODA_JSON_VALIDATION_STD
。これは、JSONコレクション・メタデータに含まれる該当値です。STANDARD
構文の詳細は、Oracle Database: Simple Oracle Document Access (SODA)の概要を参照してください。
-
- 属性のデータ型
-
ub4
OCI_ATTR_SODA_CTNT_COMPRESS
- モード
-
READ
- 説明
-
JSONコレクション・メタデータに含まれるSecureFiles LOB圧縮設定の該当値にOCI値を指定します。この属性の有効な値は次のとおりです。
-
NONE
の場合、OCI_SODA_LOB_COMPRESS_NONE
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
HIGH
の場合、OCI_SODA_LOB_COMPRESS_HIGH
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
MEDIUM
の場合、OCI_SODA_LOB_COMPRESS_MEDIUM
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
LOW
の場合、OCI_SODA_LOB_COMPRESS_LOW
これは、JSONコレクション・メタデータに含まれる該当値です。
関連項目:
SecureFiles LOB記憶域の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照
-
- 属性のデータ型
-
ub1
OCI_ATTR_SODA_CTNT_CACHE
- モード
-
READ
- 説明
-
SecureFiles LOBキャッシュ設定を指定します。
関連項目:
SecureFiles LOB記憶域の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照
- 属性のデータ型
-
boolean
OCI_ATTR_SODA_CTNT_ENCRYPT
- モード
-
READ
- 説明
-
JSONコレクション・メタデータに含まれるSecureFiles LOB暗号化設定の該当値にOCI値を指定します。この属性の有効な値は次のとおりです。
-
NONE
の場合、OCI_SODA_LOB_ENCRYPT_NONE
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
3DES168
の場合、OCI_SODA_LOB_ENCRYPT_3DES168
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
AES128
の場合、OCI_SODA_LOB_ENCRYPT_AES128
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
AES192
の場合、OCI_SODA_LOB_ENCRYPT_AES192
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
AES256
の場合、OCI_SODA_LOB_ENCRYPT_AES256
。これは、JSONコレクション・メタデータに含まれる該当値です。
関連項目:
SecureFiles LOB記憶域の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照
-
- 属性のデータ型
-
ub1
OCI_ATTR_SODA_VERSION_COL_NAME
OCI_ATTR_SODA_VERSION_METHOD
- モード
-
READ
- 説明
-
これは、JSONコレクション・メタデータに含まれる、オブジェクトがコレクションに挿入または置換される際にオブジェクトのバージョン値の計算に使用される該当メソッドのOCI値を指定します。この属性の有効な値は次のとおりです。
-
UUID
の場合、OCI_SODA_VERSION_UUID
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
TIMESTAMP
の場合、OCI_SODA_VERSION_TIMESTAMP
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
MD5
の場合、OCI_SODA_VERSION_MD5
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
SHA256
の場合、OCI_SODA_VERSION_SHA256
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
SEQUENTIAL
の場合、OCI_SODA_VERSION_SEQUENTIAL
。これは、JSONコレクション・メタデータに含まれる該当値です。 -
NONE
の場合、OCI_SODA_VERSION_NONE
。これは、JSONコレクション・メタデータに含まれる該当値です。
-
- 属性のデータ型
-
ub1
OCI_ATTR_SODA_MODTIME_COL_NAME
OCI_ATTR_SODA_MODTIME_INDEX
OCI_ATTR_SODA_CRTIME_COL_NAME
OCI_ATTR_SODA_MTYPE_COL_NAME
OCI_ATTR_SODA_READONLY
A.18 SODA操作オプション・ハンドル属性
OCI SODA操作オプション・ハンドルの属性をリストし、説明します。
この項に示す属性は、標準のOCIAttrSetメソッドを使用してOCISodaOperationOptions
ハンドルで設定できます。ただし、OCISodaOperationOptions
ハンドルにキーの配列を設定する場合は、OCISodaOperKeysSet()
メソッドを使用する必要があります。
OCI_ATTR_SODA_KEY
OCI_ATTR_SODA_FETCH_ARRAY_SIZE
- 説明
-
Oracle Databaseリリース20c以降では、新しいSODA属性
OCI_ATTR_SODA_FETCH_ARRAY_SIZE
が導入されました。OCI_ATTR_SODA_FETCH_ARRAY_SIZE
属性は操作ハンドルに設定でき、この値はOCISodaFind()
のコール時にプリフェッチされるドキュメントの数を示します。後続のOCISodaDocGetNext()
のコールでは、内部プリフェッチ・バッファにドキュメントが保持されるまで、ラウンドトリップは行われません。この属性を設定すると、ネットワークのラウンドトリップを減らすことによって、フェッチのパフォーマンスを向上させることができます。注意:
この属性のデフォルト値は100に設定されており、操作ハンドルで
OCIAttrSet()
をコールすることによってオーバーライドできます。
ub4 pfchsz = 125;
OCIAttrSet(opr, OCI_HTYPE_SODA_OPER_OPTIONS, &pfchsz, 0,
OCI_ATTR_SODA_FETCH_ARRAY_SIZE, errhp);
A.19 LOB記述子およびLOBロケータ属性
LOBロケータ属性をリストし、説明します。
パラメータ記述子には、次の属性を使用します。
OCI_ATTR_LOBEMPTY
- モード
-
WRITE
- 説明
-
内部LOBロケータをEmpty値に設定します。これによって、そのロケータは
INSERT
文またはUPDATE
文のバインド変数として使用でき、LOBをEmpty値に初期化できます。LOBがEmpty値になると、OCILobWrite2()またはOCILobWrite() (非推奨)をコールして、データをLOBに移入できます。この属性は内部LOB (BLOB
、CLOB
、NCLOB
)に対してのみ有効です。アプリケーションから、次の宣言などの0 (ゼロ)の値を持つ
ub4
のアドレスを渡します。ub4 lobEmpty = 0
その後にアドレス
&lobEmpty
を渡します。 - 属性のデータ型
-
ub4 *
OCI_ATTR_LOB_REMOTE
OCI_ATTR_LOB_TYPE
A.20 JSON記述子の属性
この項ではJSON属性について説明します。
JSON記述子の次のJSON属性を取得および設定するには、OCIAttrGet ()
およびOCIAttrSet()
をそれぞれ使用します。
OCI_ATTR_JSON_DOM_MUTABLE
関連トピック
A.22 Databaseアドバンスト・キューイング記述子の属性
Databaseアドバンスト・キューイング記述子の属性をリストし、説明します
Databaseアドバンスト・キューイング記述子には、次の属性を使用します。
A.22.1 OCIAQEnqOptions記述子の属性
OCIAQEnqOptions記述子の属性をリストし、説明します。
次に示す属性は、OCIAQEnqOptions
記述子のプロパティです。
OCI_ATTR_MSG_DELIVERY_MODE
OCI_ATTR_RELATIVE_MSGID
OCI_ATTR_SEQUENCE_DEVIATION
OCI_ATTR_TRANSFORMATION
OCI_ATTR_VISIBILITY
A.22.2 OCIAQDeqOptions記述子の属性
OCIAQDeqOptions記述子の属性をリストし、説明します。
次に示す属性は、OCIAQDeqOptions
記述子のプロパティです。
OCI_ATTR_CONSUMER_NAME
OCI_ATTR_CORRELATION
OCI_ATTR_DEQ_MODE
- モード
-
READ/WRITE
- 説明
-
デキューに対応付けられたロック動作を指定します。
- 属性のデータ型
-
ub4
- 有効な値
-
次に示す値のみ有効です。
-
OCI_DEQ_BROWSE
- ロックを取得することなくメッセージを読み取ります。これはSELECT
文に相当します。 -
OCI_DEQ_LOCKED
- メッセージを読み取り、書込みロックを取得します。ロックは、トランザクションの間、存続します。これは、SELECT
FOR
UPDATE
文と同じです。 -
OCI_DEQ_REMOVE
- メッセージを読み取り、それを更新または削除します。これはデフォルトです。メッセージは保存プロパティに基づいてキュー表に保存されます。 -
OCI_DEQ_REMOVE_NODATA
- メッセージの受取りを確認しますが、実際のメッセージ内容は送付しません。
-
OCI_ATTR_DEQ_MSGID
OCI_ATTR_DEQCOND
- モード
-
READ/WRITE
- 説明
-
この属性は、SQL問合せの
WHERE
句に類似したブール式です。このブール式には、メッセージ・プロパティの条件、ユーザー・データ・プロパティ(オブジェクト・ペイロードのみ)およびPL/SQLまたはSQL関数を含めることができます。メッセージ・ペイロード(オブジェクト・ペイロード)のデキュー条件を指定するには、句にオブジェクト・タイプの属性を使用します。ペイロードが格納されたキュー表の特定の列を指定するには、各属性の前に修飾子として
tab.user_data
を追加する必要があります。属性は4000文字を超えないようにします。複数のメッセージがデキュー条件を満たす場合、デキューの順序は未確定で、キューのソート順は考慮されません。
- 属性のデータ型
-
oratext *
- 例
checkerr(errhp, OCIAttrSet(deqopt, OCI_DTYPE_AQDEQ_OPTIONS, (dvoid *)"tab.priority between 2 and 4" , strlen("tab.priority between 2 and 4"), OCI_ATTR_DEQCOND, errhp));
OCI_ATTR_MSG_DELIVERY_MODE
OCI_ATTR_NAVIGATION
- モード
-
READ/WRITE
- 説明
-
取り出すメッセージの位置を指定します。最初に位置が判断されます。次に検索基準が適用されます。最後にメッセージが取り出されます。
- 属性のデータ型
-
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
が定義されます。同じトランザクション・グループに属するメッセージはすべて、このメッセージ・プロパティに対し同一の値を持ちます。
-
OCI_ATTR_TRANSFORMATION
OCI_ATTR_VISIBILITY
OCI_ATTR_WAIT
- モード
-
READ/WRITE
- 説明
-
検索基準に一致するメッセージがないときの待機時間を指定します。同じグループのメッセージがデキューされている場合、このパラメータは無視されます。
- 属性のデータ型
-
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を推奨)も使用できます。 -
A.22.3 OCIAQMsgProperties記述子の属性
OCIAQMsgProperties記述子の属性をリストし、説明します。
次に示す属性は、OCIAQMsgProperties
記述子のプロパティです。
OCI_ATTR_ATTEMPTS
OCI_ATTR_CORRELATION
OCI_ATTR_DELAY
- モード
-
READ/WRITE
- 説明
-
エンキューしたメッセージを遅延させる秒数を指定します。遅延は、メッセージがデキュー可能になるまでの秒数を表します。メッセージID (msgid)によりデキューすると、遅延指定は上書きされます。遅延を設定すると、エンキューされたメッセージは
WAITING
状態となり、遅延時間が終了するとともにREADY
状態となります。DELAY
処理にはキュー・モニターを起動させる必要があります。遅延は、メッセージをエンキューするプロデューサが設定することに注意してください。 - 属性のデータ型
-
sb4
- 有効な値
-
すべてのsb4値が有効ですが、さらに次のような定数が事前定義されています。
- OCI_MSG_NO_DELAY - メッセージが即時にデキューできることを示します。
OCI_ATTR_ENQ_TIME
OCI_ATTR_EXCEPTION_QUEUE
- モード
-
READ/WRITE
- 説明
-
正常に処理できないメッセージの移動先となるキューの名前を指定します。メッセージが移動されるのは、デキューが
max_retries
以内の回数で成功しなかった場合とメッセージの有効期限が切れた場合です。例外キューのメッセージはすべてEXPIRED
状態です。デフォルトは、キュー表に関連付けられている例外キューです。移動時に指定の例外キューが存在しない場合、メッセージはキュー・テーブルと対応付けられたデフォルトの例外キューに移動し、警告がアラート・ファイルにログ記録されます。デフォルトの例外キューが使用されている場合は、デキュー時に
NULL
値が戻されます。この属性は有効なキュー名を参照する必要があります。
- 属性のデータ型
-
oratext *
OCI_ATTR_EXPIRATION
- モード
-
READ/WRITE
- 説明
-
メッセージの期限切れを指定します。デキューにおいてメッセージを使用可能にする時間(秒)を決定します。このパラメータは、遅延からのオフセットです。期限切れ処理にはキュー・モニターを起動させる必要があります。
期限切れ前のメッセージは
READY
状態です。期限切れ前にデキューされないメッセージは、EXPIRED
状態となって例外デキューに移動します。 - 属性のデータ型
-
sb4
- 有効な値
-
すべてのsb4値が有効ですが、さらに次のような定数が事前定義されています。
- OCI_MSG_NO_EXPIRATION - メッセージは期限切れになりません。
OCI_ATTR_MSG_DELIVERY_MODE
OCI_ATTR_MSG_STATE
OCI_ATTR_ORIGINAL_MSGID
OCI_ATTR_PRIORITY
OCI_ATTR_RECIPIENT_LIST
OCI_ATTR_SENDER_ID
OCI_ATTR_TRANSACTION_NO
A.22.4 OCIAQAgent記述子の属性
OCIAQAgent記述子の属性をリストし、説明します。
次に示す属性は、OCIAQAgent
記述子のプロパティです。
OCI_ATTR_AGENT_ADDRESS
OCI_ATTR_AGENT_NAME
OCI_ATTR_AGENT_PROTOCOL
A.23 サブスクリプション・ハンドル属性
サブスクリプション・ハンドル属性をリストし、説明します。
サブスクリプション・ハンドルには、次の属性を使用します。
OCI_ATTR_SERVER_DNS
OCI_ATTR_SUBSCR_CALLBACK
OCI_ATTR_SUBSCR_CQ_QOSFLAGS
- モード
-
WRITE
- 説明
-
連続問合せ(CQ)通知に固有のQOS (サービス品質フラグ)を設定します。渡すことができる可能な値については、『Oracle Database開発ガイド』のCQNのOCIサブスクリプション・ハンドル属性の使用に関する項を参照してください。
- 属性のデータ型
-
ub4 *
OCI_ATTR_SUBSCR_CTX
OCI_ATTR_SUBSCR_HOSTADDR
- モード
-
READ/WRITE
- 説明
-
OCISubscriptionRegister()
を使用して通知を登録する前に、通知の送信先であるOCI通知クライアントのリスニング・エンドポイントのクライアントIP (IPv4またはIPv6書式)を指定します。IPv4アドレスをドット付き10進数書式(192.0.2.34など)で入力するか、IPv6アドレスを16進数書式(2001:0db8:0000:0000:0217:f2ff:fe4b:4cedなど)で入力します。関連項目:
IPアドレス用のIPv6書式の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください
- 属性のデータ型
-
text *
- 例
/* Set notification client address*/ text ipaddr[16] = "192.0.2.34"; (void) OCIAttrSet((dvoid *) envhp, (ub4) OCI_HTYPE_ENV, (dvoid *) ipaddr, (ub4) strlen(ipaddr), (ub4) OCI_ATTR_SUBSCR_HOSTADDR, errhp);
OCI_ATTR_SUBSCR_IPADDR
- モード
-
READ/WRITE
- 説明
-
通知を受信するために、OCIクライアントが通知のリスニング用に登録したクライアントのIPアドレス(IPv4またはIPv6)です。たとえば、ドット付き10進数書式(192.1.2.34など)でのIPv4アドレスや、16進数書式(2001:0db8:0000:0000:0217:f2ff:fe4b:4cedなど)でのIPv6アドレスなどです。
関連項目:
IPアドレス用のIPv6書式の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください
- 属性のデータ型
-
oratext *
OCI_ATTR_SUBSCR_NAME
- モード
-
READ/WRITE
- 説明
-
サブスクリプション名です。すべてのサブスクリプションは、サブスクリプション名によって識別されます。サブスクリプション名は、指定された長さの一連のバイト数から構成されます。サブスクリプション名のバイト長は、この名前が
NULL
で終了しないことを前提として指定する必要があります。名前にマルチバイト・キャラクタが含まれる可能性があるため、この前提は重要です。クライアントでは、
OCIAttrSet()
コールを使用して、OCI_HTYPE_SUBSCR
のハンドル・タイプとOCI_ATTR_SUBSCR_NAME
の属性タイプを指定することによりサブスクリプション・ハンドルのサブスクリプション名属性を設定できます。すべてのサブスクリプション・コールバックには、
OCI_ATTR_SUBSCR_NAME
属性およびOCI_ATTR_SUBSCR_NAMESPACE
属性が設定されたサブスクリプション・ハンドルが必要です。これらの属性が設定されていない場合は、エラーが戻されます。サブスクリプション・ハンドルに設定されるサブスクリプション名は、そのネームスペースと一貫性を持たせる必要があります。 - 属性のデータ型
-
oratext *
OCI_ATTR_SUBSCR_NAMESPACE
OCI_ATTR_SUBSCR_NTFN_GROUPING_CLASS
OCI_ATTR_SUBSCR_NTFN_GROUPING_REPEAT_COUNT
OCI_ATTR_SUBSCR_NTFN_GROUPING_START_TIME
OCI_ATTR_SUBSCR_NTFN_GROUPING_TYPE
OCI_ATTR_SUBSCR_NTFN_GROUPING_VALUE
OCI_ATTR_SUBSCR_PAYLOAD
OCI_ATTR_SUBSCR_QOSFLAGS
OCI_ATTR_SUBSCR_RECPT
- モード
-
READ/WRITE
- 説明
-
属性
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_ATTR_SUBSCR_RECPTPRES
OCI_ATTR_SUBSCR_RECPTPROTO
- モード
-
READ/WRITE
- 説明
-
クライアントが通知を受信するためのプロトコルです。有効な値は次のとおりです。
-
OCI_SUBSCR_PROTO_OCI
-
OCI_SUBSCR_PROTO_MAIL
-
OCI_SUBSCR_PROTO_SERVER
-
OCI_SUBSCR_PROTO_HTTP
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 *
OCI_ATTR_SUBSCR_TIMEOUT
A.23.1 連続問合せ通知属性
連続問合せ通知属性をリストし、説明します。
次の属性は、連続問合せ通知に使用されます。
OCI_ATTR_CHNF_CHANGELAG
OCI_ATTR_CHNF_OPERATIONS
- モード
-
WRITE
- 説明
-
操作タイプに基づいて通知をフィルタするために使用します。
関連項目:
フラグ値の詳細は、「連続問合せ通知について」を参照してください
- 属性のデータ型
-
ub4 *
OCI_ATTR_CHNF_ROWIDS
OCI_ATTR_CHNF_TABLENAMES
A.23.2 連続問合せ通知の記述子の属性
連続問合せ通知の記述子の属性をリストし、説明します。
次の属性は、連続問合せ通知の記述子に使用されます。
OCI_ATTR_CHDES_DBNAME
OCI_ATTR_CHDES_NFTYPE
- モード
-
READ
- 説明
-
通知タイプを記述するフラグです。
関連項目:
フラグ値の詳細は、「連続問合せ通知について」を参照してください
- 属性のデータ型
-
ub4 *
OCI_ATTR_CHDES_ROW_OPFLAGS
OCI_ATTR_CHDES_ROW_ROWID
OCI_ATTR_CHDES_TABLE_CHANGES
OCI_ATTR_CHDES_TABLE_NAME
OCI_ATTR_CHDES_TABLE_OPFLAGS
- モード
-
READ
- 説明
-
表の操作を記述するフラグです。
- 属性のデータ型
-
ub4 *
関連項目:
OCI_DTYPETABLE_CHDES
連続問合せ通知記述子のフラグ値の詳細は、『Oracle Database開発ガイド』を参照してください。
OCI_ATTR_CHDES_TABLE_ROW_CHANGES
OCI_ATTR_CHDES_XID
- モード
-
READ
- 説明
-
メッセージのトランザクションIDです。
- 属性のデータ型
-
OCIRaw *
関連項目:
詳細は、『Oracle Database開発ガイド』を参照してください
A.23.3 通知の記述子の属性
通知記述子の属性をリストし、説明します。
次に、記述子OCI_DTYPE_AQNFY
の属性を示します。
OCI_ATTR_AQ_NTFN_GROUPING_COUNT
OCI_ATTR_AQ_NTFN_GROUPING_ MSGID_ARRAY
OCI_ATTR_CONSUMER_NAME
OCI_ATTR_MSG_PROP
OCI_ATTR_NFY_FLAGS
OCI_ATTR_NFY_MSGID
OCI_ATTR_QUEUE_NAME
A.23.4 無効化された問合せの属性
無効化された問合せの属性をリストし、説明します。
この項では、OCI_DTYPE_CQDES
の属性について説明します。
関連項目:
OCI_DTYPE_CQDES
連続問合せ通知記述子の詳細は、『Oracle Database開発ガイド』を参照してください
OCI_ATTR_CQDES_OPERATION
OCI_ATTR_CQDES_QUERYID
OCI_ATTR_CQDES_TABLE_CHANGES
A.24 ダイレクト・パス・ロード・ハンドル属性
ダイレクト・パス・ロード・ハンドル属性をリストし、説明します。
次の属性は、ダイレクト・パス・ロード・ハンドルに使用されます。
関連項目:
ダイレクト・パス・ロードおよびダイレクト・パス・ハンドルの割当ての詳細は、「ダイレクト・パス・ロードの概要」および 「オブジェクト型のダイレクト・パス・ロード」を参照してください
A.24.1 ダイレクト・パス・コンテキスト・ハンドル(OCIDirPathCtx)属性
ダイレクト・パス・コンテキスト・ハンドル(OCIDirPathCtx)属性をリストし、説明します。
次の属性は、ダイレクト・パス・コンテキスト・ハンドルに使用されます。
OCI_ATTR_BUF_SIZE
OCI_ATTR_CHARSET_ID
OCI_ATTR_DATEFORMAT
OCI_ATTR_DIRPATH_DCACHE_DISABLE
- モード
-
READ/WRITE
- 説明
-
この属性を1に設定すると、サイズを超えた場合に日付キャッシュが使用禁止になります。デフォルト値は0 (ゼロ)です。これは、キャッシュ・オーバーフロー時にキャッシュ内の検索が続行されることを示します。
関連項目:
この属性および次の4つの属性の詳細は、「OCIのダイレクト・パス・ロードでの日付キャッシュの使用について」を参照してください
- 属性のデータ型
-
ub1 */ub1 *
OCI_ATTR_DIRPATH_DCACHE_HITS
OCI_ATTR_DIRPATH_DCACHE_MISSES
OCI_ATTR_DIRPATH_DCACHE_NUM
OCI_ATTR_DIRPATH_DCACHE_SIZE
OCI_ATTR_DIRPATH_DEF_EXP_CACHE_SIZE
OCI_ATTR_DIRPATH_DEFAULTS
- モード
-
読取り/書込み
- 説明
-
ダイレクト・パスAPIで、明示的にロードされない列のデフォルト式を処理する方法を指定します。
次の値が有効です。-
OCI_DIRPATH_DEFAULTS_DEFAULT
1回評価しますが、順序が含まれていない場合はすべての行を評価します。
サポートされていないデフォルト値が検出されると、エラーが発生します。これはデフォルトです。
-
OCI_DIRPATH_DEFAULTS_EVALUATE_ONCE
ロードの開始時に1回評価します。サポートされていないデフォルト値が検出されると、エラーが発生します。
-
OCI_DIRPATH_DEFAULTS_EVALUATE_EVERY_ROW
すべての行を評価します。サポートされていないデフォルト値が検出されると、エラーが発生します。
-
OCI_DIRPATH_DEFAULTS_IGNORE
すべてのデフォルトを無視して、NULLをロードします。
-
OCI_DIRPATH_DEFAULTS_IGNORE_UNSUPPORTED_EVALUATE_ONCE
サポートされていないデフォルトを無視し、NULLをロードして、サポートされているものを1回評価します。
-
OCI_DIRPATH_DEFAULTS_IGNORE_UNSUPPORTED_EVALUATE_EVERY_ROW
サポートされていないデフォルトを無視し、NULLをロードして、サポートされているすべての行を評価します。
-
- 属性のデータ型
ub1 */ub1 *
- 例
ub1 dirpath_handling = OCI_DIRPATH_DEFAULTS_EVALUATE_EVERY_ROW; OCIAttrSet ((void *)dpctx, (ub4)OCI_HTYPE_DIRPATH_CTX, (void *)&dirpath_handling, (ub4)0, (ub4)OCI_ATTR_DIRPATH_DEFAULTS, errhp);
OCI_ATTR_DIRPATH_FLAGS
- モード
-
READ/WRITE
- 説明
-
ロードの動作を制御するために使用するフラグです。
OCI_DIRPATH_FLAGS_VLDT
0x01 - サーバーでのストリームの解析時にOracleNUMBER
およびDATE
データの形式を検証します。これは時間のかかる操作であるため、デフォルト値ではこのフラグは設定されません。日付と数値の無効な内部表現を生成するOCIDirPath
に関する問題が疑われる場合、これを使用できます。 - 例
ub4 dirpath_flags = OCI_ATTR_DIRPATH_FLAGS_VLDT; OCIAttrSet ((void *)dpctx, (ub4)OCI_HTYPE_DIRPATH_CTX, (void *)&dirpath_flags, (ub4)0, (ub4)OCI_ATTR_DIRPATH_FLAGS, errhp);
- 属性のデータ型
-
ub4 *
/ub4 *
OCI_ATTR_DIRPATH_INDEX_MAINT_METHOD
OCI_ATTR_DIRPATH_MODE
OCI_ATTR_DIRPATH_NO_INDEX_ERRORS
OCI_ATTR_DIRPATH_NOLOG
OCI_ATTR_DIRPATH_OBJ_CONSTR
OCI_ATTR_DIRPATH_PARALLEL
OCI_ATTR_DIRPATH_PGA_LIM
OCI_ATTR_DIRPATH_REJECT_ROWS_REPCH
OCI_ATTR_DIRPATH_SKIPINDEX_METHOD
OCI_ATTR_DIRPATH_SPILL_PASSES
OCI_ATTR_LIST_COLUMNS
OCI_ATTR_NAME
OCI_ATTR_NUM_COLS
OCI_ATTR_NUM_ROWS
OCI_ATTR_SCHEMA_NAME
OCI_ATTR_SUB_NAME
A.24.2 ダイレクト・パス関数コンテキスト・ハンドル(OCIDirPathFuncCtx)属性
ダイレクト・パス関数のコンテキスト・ハンドル(OCIDirPathFuncCtx)属性をリストし、説明します。
これらの属性の詳細な説明は、「ダイレクト・パス関数コンテキストと属性」を参照してください。
OCI_ATTR_DIRPATH_EXPR_TYPE
OCI_ATTR_LIST_COLUMNS
OCI_ATTR_NAME
OCI_ATTR_NUM_COLS
OCI_ATTR_NUM_ROWS
A.24.3 ダイレクト・パス関数列配列ハンドル(OCIDirPathColArray)属性
ダイレクト・パス関数列配列ハンドル(OCIDirPathColArray)属性をリストし、説明します。
次の属性は、ダイレクト・パス関数の列配列ハンドルに使用されます。
OCI_ATTR_COL_COUNT
OCI_ATTR_NUM_COLS
OCI_ATTR_NUM_ROWS
OCI_ATTR_ROW_COUNT
A.24.4 ダイレクト・パス・ストリーム・ハンドル(OCIDirPathStream)属性
ダイレクト・パス・ストリーム・ハンドル(OCIDirPathStream)属性をリストし、説明します。
次の属性は、ダイレクト・パス・ストリーム・ハンドルに使用されます。
OCI_ATTR_BUF_ADDR
OCI_ATTR_BUF_SIZE
OCI_ATTR_ROW_COUNT
OCI_ATTR_STREAM_OFFSET
A.24.5 ダイレクト・パス列パラメータ属性
ダイレクト・パス列パラメータ属性の使用方法について説明します。
アプリケーションでは、各列パラメータ記述子に対して属性を設定することにより、ロードする列、およびデータの外部書式を指定します。列パラメータ記述子は、OCIParamGet()
によって、列パラメータ・リストのパラメータとして取得されます。表の列パラメータ・リストは、ダイレクト・パス・コンテキストのOCI_ATTR_LIST_COLUMNS
属性から取得されます。非スカラー列の場合、列パラメータ・リストは、そのダイレクト・パス関数コンテキストのOCI_ATTR_LIST_COLUMNS
属性から取得されます。
すべてのパラメータは1を基準としていることに注意してください。
A.24.5.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)); } ...
OCI_ATTR_CHARSET_ID
OCI_ATTR_DATA_SIZE
OCI_ATTR_DATA_TYPE
OCI_ATTR_DATEFORMAT
OCI_ATTR_DIRPATH_OID
OCI_ATTR_DIRPATH_SID
OCI_ATTR_NAME
OCI_ATTR_PRECISION
OCI_ATTR_SCALE
A.25 プロセス・ハンドル属性
プロセス・ハンドル属性をリストし、説明します。
共有システムのパラメータは、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つのアプリケーションが、指定の共有サブシステムに接続できます。
OCI_ATTR_MEMPOOL_APPNAME
OCI_ATTR_MEMPOOL_HOMENAME
OCI_ATTR_MEMPOOL_INSTNAME
OCI_ATTR_MEMPOOL_SIZE
OCI_ATTR_PROC_MODE
- モード
-
READ
- 説明
-
現在設定されているすべてのプロセス・モードを戻します。読み取られる値には、現在設定されているすべての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 *
A.26 イベント・ハンドル属性
イベント・ハンドル属性をリストし、説明します。
OCIEvent
ハンドルは、イベント・ペイロードの属性をカプセル化します。このハンドルは、イベント・コールバックをコールする前に暗黙的に割り当てられます。
イベント・コールバックは、次の属性とともにOCIAttrGet()
を使用して、イベントの属性を取得します。
関連項目:
OCI_ATTR_DBDOMAIN
OCI_ATTR_DBNAME
OCI_ATTR_EVENTTYPE
OCI_ATTR_HA_SOURCE
OCI_ATTR_HA_SRVFIRST
OCI_ATTR_HA_SRVNEXT
OCI_ATTR_HA_STATUS
OCI_ATTR_HA_TIMESTAMP
OCI_ATTR_HOSTNAME
OCI_ATTR_INSTNAME
- モード
-
READ
- 説明
-
イベント・ハンドル属性として
OCIAttrGet()
をコールすると、このイベントによる影響を受けたインスタンスの名前が取り出されます。これもサーバー・ハンドル属性です。この属性をサービス・コンテキストで使用して、指定された接続に対応するシャード・インスタンス名を戻すこともできます。この属性を使用して、OCIShardInstancesGet()
コールによって取得されるシャード・インスタンス記述子からシャード・インスタンス名を検出できます。 - 属性のデータ型
-
oratext **
- 例
-
次の例は、指定された接続(svchp)に対応するシャード・インスタンス名を取得する方法を示しています。
Oratext instanceName [OCI_INSTNAME_MAXLEN]; ub4 instanceNameLen; OCIATTRGet(svchp, OCI_HTYPE_SVCCTX, instanceName, (ub4 *) &instanceNameLen, OCI_ATTR_INSTNAME, errhp);
OCI_ATTR_INSTSTARTTIME
OCI_ATTR_SERVICENAME