この付録では、OCIのハンドルおよび記述子の属性について説明します。
OCIのハンドルおよび記述子はOCIAttrGet()
関数で読み取り、OCIAttrSet()
関数で変更することができます。
この付録では、次の項目について説明します。
環境ハンドル属性をリストし、説明します。
環境ハンドルには、次の属性を使用します。
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_WALL_LOC
サービス・コンテキスト・ハンドルには、次の属性を使用します。
OCI_ATTR_ENV
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_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
サーバー・ハンドルには、次の属性を使用します。
関連項目:
次のイベント・ハンドル属性もサーバー・ハンドルで使用できます。
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_IN_V8_MODE
OCI_ATTR_NONBLOCKING_MODE
この属性は、ブロック化モードを判断します。サーバー・コンテキストが非ブロック化モードの場合、読取り時にこの属性値はTRUE
を戻します。設定すると、非ブロック化モード属性が切り替えられます。この属性を設定できるのは、OCISessionBegin()
またはOCILogon2()
がコールされた後でのみです。それ以外の場合はエラーが戻されます。
関連項目:
OCI_ATTR_RECEIVE_TIMEOUT
OCI_ATTR_SEND_TIMEOUT
OCI_ATTR_SERVER_GROUP
OCI_ATTR_SERVER_STATUS
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
READ
ハンドルに追加メモリーが割り当てられている場合、ユーザー・メモリーへのポインタが戻されます。追加メモリーが割り当てられていないハンドルに関しては、NULL
ポインタが戻されます。
関連項目:
次の属性の使用方法の詳細は、「OCIXStreamOutLCRReceive()」を参照してください
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_CALL_TIME
OCI_ATTR_CERTIFICATE
OCI_ATTR_CLIENT_IDENTIFIER
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文字以内であることのみです。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); ...
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
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_TRANS_PROFILE_FOREIGN
OCI_ATTR_TRANSACTION_IN_PROGRESS
OCI_ATTR_USERNAME
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
セッション・プール・ハンドルには、次の属性を使用します。
OCI_ATTR_SPOOL_AUTH
WRITE
セッション・プールから取得されているセッションでセッション作成前属性を有効にする場合、この属性は、セッション・プール・ハンドルで設定できます。現在、このOCIAuthInfo
ハンドルで設定できるのは、次の属性のみです。
OCI_ATTR_DRIVER_NAME
OCI_ATTR_EDITION
OCIAuthInfo
ハンドルに他の属性が設定されている場合、およびセッション・プール・ハンドルにOCIAuthInfo
ハンドルが設定されている場合、エラーになります。さらに、セッション・プール・ハンドルを使用したOCISessionPoolCreate()
のコール前のみ、セッション・プール・ハンドルにOCIAuthInfo
ハンドルを設定する必要があります。OCISessionPoolCreate()
の後にこれを設定すると、エラーになります。
OCIAuthInfo *
OCI_ATTR_SPOOL_BUSY_COUNT
OCI_ATTR_SPOOL_GETMODE
READ/WRITE
この属性は、プール内のすベてのセッションがビジーで、いくつかのセッションが最大に達していることが判明したときに、セッション・プールの動作を判断します。値は次のとおりです。
OCI_SPOOL_ATTRVAL_WAIT
- スレッドはセッションが解放されるまでブロックされて待機します。これがデフォルト値です。
OCI_SPOOL_ATTRVAL_NOWAIT
- エラーが戻ります。
OCI_SPOOL_ATTRVAL_FORCEGET
- すべてのセッションがビジーで、セッション数が最大に達している場合でも、新しいセッションを作成します。OCISessionGet()
によって警告が戻されます。この場合、OCISessionGet()
が警告を戻すのは、新規作成のセッションがセッションの最大数を超えた場合です。
この値を設定した場合は、Oracle Databaseのインスタンスでサポートできるセッション数よりも多いセッションが作成される可能性があります。この場合は、次のエラーがサーバーから戻されます。
ORA 00018 - Maximum number of sessions exceeded
このエラーは、セッション・プールのユーザーに伝播されます。
読取りの場合は、適切な属性値が戻されます。
OCI_ATTR_SPOOL_INCR
OCI_ATTR_SPOOL_MAX
OCI_ATTR_SPOOL_MAX_LIFETIME_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_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
READ/WRITE
position
0での定義とSELECT...FOR UPDATE
文の実行後に、ROWID
がフェッチされるように指定します。
boolean */boolean
関連項目:
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_SQLFNCODE
READ
文に対応付けられたSQLコマンドの関数コードを戻します。
ub2 *
表A-1は、SQLコマンド・コードのリストを示しています。
表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 |
OCI_ATTR_STATEMENT
OCI_ATTR_STMTCACHE_CBKCTX
OCI_ATTR_STMT_STATE
READ
文のフェッチ状態を戻します。コール元はこの属性を使用して、このセッションが別のサービス・コンテキストで使用できるかどうか、現行のデータ・アクセス・コール・セットでまだ必要かどうかを判断できます。基本的に、フェッチ実行サイクルの途中では、別の文を実行するためにセッション・ハンドルを解放することはありません。次の値が有効です。
OCI_STMT_STATE_INITIALIZED
OCI_STMT_STATE_EXECUTED
OCI_STMT_STATE_END_OF_FETCH
OCI_ATTR_STMT_TYPE
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文)
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 *
バインド・ハンドル属性をリストし、説明します。
バインド・ハンドルには、次の属性を使用します。
OCI_ATTR_CHAR_COUNT
OCI_ATTR_CHARSET_FORM
OCI_ATTR_CHARSET_ID
READ/WRITE
バインド・ハンドルのキャラクタ・セット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 *
OCI_ATTR_MAXCHAR_SIZE
OCI_ATTR_MAXDATA_SIZE
OCI_ATTR_PDPRC
OCI_ATTR_PDSCL
OCI_ATTR_ROWS_RETURNED
定義ハンドル属性をリストし、説明します。
定義ハンドルには、次の属性を使用します。
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
記述ハンドルには、次の属性を使用します。
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"); }
パラメータ記述子には、次の属性を使用します。
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 *
Streamsアドバンスト・キューイング記述子の属性をリストし、説明します
Streamsアドバンスト・キューイング記述子には、次の属性を使用します。
関連項目:
Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド
次に示す属性は、OCIAQEnqOptions
記述子のプロパティです。
OCI_ATTR_MSG_DELIVERY_MODE
OCI_ATTR_RELATIVE_MSGID
OCI_ATTR_SEQUENCE_DEVIATION
READ/WRITE
この機能は新しいアプリケーションでは非推奨ですが、互換性のため保持されています。
現在エンキューされているメッセージを、キューにあるその他のメッセージより先にデキューするかどうかを指定します。
ub4
次に示す値のみ有効です。
OCI_ENQ_BEFORE
- メッセージは、OCI_ATTR_RELATIVE_MSGID
で指定したメッセージより先にエンキューされます。
OCI_ENQ_TOP
- メッセージは、その他のあらゆるメッセージより先にエンキューされます。
OCI_ATTR_TRANSFORMATION
OCI_ATTR_VISIBILITY
次に示す属性は、OCIAQDeqOptions
記述子のプロパティです。
OCI_ATTR_CONSUMER_NAME
OCI_ATTR_CORRELATION
OCI_ATTR_DEQ_MODE
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
READ/WRITE
新しいメッセージをカレント・トランザクションの一部としてデキューするかどうかを指定します。BROWSE
モードを使用しているときは、この可視性(visibility)パラメータは無視されます。
ub4
次に示す値のみ有効です。
OCI_DEQ_ON_COMMIT
- デキューはカレント・トランザクションの一部になります。これは、デフォルトです。
OCI_DEQ_IMMEDIATE
- デキューされたメッセージはカレント・トランザクションの一部にはなりません。固有のトランザクションが構成されます。
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を推奨)も使用できます。
次に示す属性は、OCIAQMsgProperties
記述子のプロパティです。
OCI_ATTR_ATTEMPTS
OCI_ATTR_CORRELATION
OCI_ATTR_DELAY
READ/WRITE
エンキューしたメッセージを遅延させる秒数を指定します。遅延はメッセージがデキュー可能になった後の秒数を示します。メッセージID (msgid)によりデキューすると、遅延指定は上書きされます。遅延を設定すると、エンキューされたメッセージはWAITING
状態となり、遅延時間が終了するとともにREADY
状態となります。DELAY
処理にはキュー・モニターを起動させる必要があります。遅延は、メッセージをエンキューするプロデューサが設定することに注意してください。
sb4
すべてのsb4値が有効ですが、さらに次のような定数が事前定義されています。
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_ATTR_MSG_DELIVERY_MODE
OCI_ATTR_MSG_STATE
OCI_MSG_WAITING
- メッセージの遅延時間がまだ経過していません。
OCI_MSG_READY
- メッセージは処理できる状態にあります。
OCI_MSG_PROCESSED
- メッセージは処理され、保存されています。
OCI_MSG_EXPIRED
- メッセージは例外キューに移動しました。
OCI_ATTR_ORIGINAL_MSGID
OCI_ATTR_PRIORITY
OCI_ATTR_RECIPIENT_LIST
OCI_ATTR_SENDER_ID
OCI_ATTR_TRANSACTION_NO
次に示す属性は、OCIAQAgent
記述子のプロパティです。
OCI_ATTR_AGENT_ADDRESS
OCI_ATTR_AGENT_NAME
OCI_ATTR_AGENT_PROTOCOL
サブスクリプション・ハンドル属性をリストし、説明します。
サブスクリプション・ハンドルには、次の属性を使用します。
OCI_ATTR_SERVER_DNS
OCI_ATTR_SUBSCR_CALLBACK
OCI_ATTR_SUBSCR_CQ_QOSFLAGS
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
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_PORTNO
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
次の属性は、連続問合せ通知に使用されます。
OCI_ATTR_CHNF_CHANGELAG
OCI_ATTR_CHNF_OPERATIONS
関連項目:
フラグ値の詳細は、「連続問合せ通知」を参照してください
OCI_ATTR_CHNF_ROWIDS
OCI_ATTR_CHNF_TABLENAMES
連続問合せ通知の記述子の属性をリストし、説明します。
次の属性は、連続問合せ通知の記述子に使用されます。
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
OCI_ATTR_CHDES_TABLE_ROW_CHANGES
次に、記述子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
ダイレクト・パス・ロード・ハンドル属性をリストし、説明します。
次の属性は、ダイレクト・パス・ロード・ハンドルに使用されます。
関連項目:
ダイレクト・パス・ロードおよびダイレクト・パス・ハンドルの割当ての詳細は、「ダイレクト・パス・ロードの概要」および 「オブジェクト型のダイレクト・パス・ロード」を参照してください
次の属性は、ダイレクト・パス・コンテキスト・ハンドルに使用されます。
OCI_ATTR_BUF_SIZE
OCI_ATTR_CHARSET_ID
OCI_ATTR_DATEFORMAT
OCI_ATTR_DIRPATH_DCACHE_DISABLE
READ/WRITE
この属性を1に設定すると、サイズを超えた場合に日付キャッシュが使用禁止になります。デフォルト値は0 (ゼロ)です。これは、キャッシュ・オーバーフロー時にキャッシュ内の検索が続行されることを示します。
関連項目:
この属性および次の4つの属性については、「OCIのダイレクト・パス・ロードでの日付キャッシュの使用について」を参照してください
OCI_ATTR_DIRPATH_DCACHE_HITS
OCI_ATTR_DIRPATH_DCACHE_MISSES
OCI_ATTR_DIRPATH_DCACHE_NUM
OCI_ATTR_DIRPATH_DCACHE_SIZE
OCI_ATTR_DIRPATH_INDEX_MAINT_METHOD
OCI_ATTR_DIRPATH_MODE
OCI_DIRPATH_LOAD
- ロード操作(デフォルト)
OCI_DIRPATH_CONVERT
- 変換専用操作
OCI_ATTR_DIRPATH_NO_INDEX_ERRORS
OCI_ATTR_DIRPATH_NOLOG
0- ロードされるセグメントの属性を使用します。
1- ログ記録を行いません。必要に応じてDDL文を上書きします。
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_DIRPATH_INDEX_MAINT_SKIP_UNUSABLE
(使用できない索引をスキップする)
OCI_DIRPATH_INDEX_MAINT_DONT_SKIP_UNUSABLE
(使用できない索引をスキップしない)
OCI_DIRPATH_INDEX_MAINT_SKIP_ALL
(すべての索引メンテナンスをスキップする)
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
ダイレクト・パス関数のコンテキスト・ハンドル(OCIDirPathFuncCtx)属性をリストし、説明します。
これらの属性の詳細な説明は、「ダイレクト・パス関数コンテキストと属性」を参照してください。
OCI_ATTR_DIRPATH_EXPR_TYPE
OCI_ATTR_LIST_COLUMNS
OCI_ATTR_NAME
OCI_ATTR_NUM_COLS
OCI_ATTR_NUM_ROWS
次の属性は、ダイレクト・パス関数の列配列ハンドルに使用されます。
OCI_ATTR_COL_COUNT
OCI_ATTR_NUM_COLS
OCI_ATTR_NUM_ROWS
OCI_ATTR_ROW_COUNT
次の属性は、ダイレクト・パス・ストリーム・ハンドルに使用されます。
OCI_ATTR_BUF_ADDR
OCI_ATTR_BUF_SIZE
OCI_ATTR_ROW_COUNT
OCI_ATTR_STREAM_OFFSET
ダイレクト・パス列パラメータ属性の使用方法について説明します。
アプリケーションでは、各列パラメータ記述子に対して属性を設定することにより、ロードする列、およびデータの外部書式を指定します。列パラメータ記述子は、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)); } ...
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
プロセス・ハンドル属性をリストし、説明します。
共有システムのパラメータは、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 *
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
OCI_ATTR_INSTSTARTTIME
OCI_ATTR_SERVICENAME