OCL Function Reference

以下の表は、EDBOCLコネクタがサポートしている機能のリスト。すべてのヘッダーファイルはユーザが指定する必要があることに注意してください。AdvancedServerは、そのようなファイルを提供しません。

Functionsの接続、承認、初期化

ファンクション

説明

OCIBreak

指定されたOCLファンクションを中止します。

OCIEnvCreate

OCL環境を作成します。

OCIEnvInit

OCL環境ハンドルを初期化します。

OCIInitialize

OCL環境を初期化します。

OCILogoff

セッションします。

OCILogon

ログオン接続を作成します。

OCILogon2

さまざまなモードでログオンセッションを作成します。

OCIReset

現在のオペレーション/プロトコルをリセットします。

OCIServerAttach

データソースへのアクセスパスを確立します。

OCIServerDetach

データソースへのアクセスを削除します。

OCISessionBegin

ユーザセッションを作成します。

OCISessionEnd

ユーザセッションを終了します。

OCISessionGet

セッション・プールからセッションを取得します。

OCISessionRelease

セッションします。

OCITerminate

共有メモリサブシステムからデタッチします。

tnsnames.oraファイルの使用

OCIServerAttach および OCILogon メソッドは、 tnsnames.ora ファイルの dblink パラメータで指定された接続ディスクリプタとして NET_SERVICE_NAME を使用します。 tnsnames.ora ファイル(オラクルデータベースと互換性あり)を使用して、データベースコネクションの詳細を指定します。OCLは、ユーザーのホームディレクトリで .tnsnames.ora 名前付けのファイルを検索します。OCLがユーザーのホームディレクトリで .tnsnames.ora ファイルを見つけられない場合、 TNS_ADMIN 環境変数で指定されたパスで tnsnames.ora を検索します。

tnsnames.ora ファイルには、複数の記述子 (NET_SERVICE_NAME) を指定できます。

サンプルの tnsnames.ora ファイルには以下が含まれます。

 EDBX =
(DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 5444))
  (CONNECT_DATA = (SERVER = DEDICATED)(SID = edb))
)

ファイルに含まれていないパラメーターは、OpenClientLibraryによって無視されます。この例では、 SID は、ポート 5444localhost で実行されているクラスター内の edb 名前付けのデータベースを指します。

tnsnames.ora ファイルを使用する OCIServerAttach へのCプログラム呼び出しは次のようになります。

static text *username = (text *) "enterprisedb";
static text *password = (text *) "edb";
static text *attach_str = "EDBX";
OCIServerAttach(srvhp, errhp, attach_str, strlen(attach_str), 0);

tnsnames.ora ファイルがない場合は、接続文字列を //localhost:5444/edbx フォームで提供します。

注釈

tnsnames.ora では複数の記述子もサポートされています。

ハンドル関数と記述子Functions

ファンクション

説明

OCIAttrGet

ハンドル属性を取得します。高度なサーバーは、次のハンドル属性をサポートしています:OCI_ATTR_USERNAME、OCI_ATTR_PASSWORD、OCI_ATTR_SERVER、OCI_ATTR_ENV、OCI_ATTR_SESSION、OCI_ATTR_ROW_COUNT、OCI_ATTR_CHARSET_FORM、OCI_ATTR_CHARSET_ID、EDB_ATTR_STMT_LEVEL_TX、OCI_ATTR_MODE

OCIAttrSet

ハンドル属性を設定します。拡張サーバーは、次のハンドル属性をサポートしています:OCI_ATTR_USERNAME、OCI_ATTR_PASSWORD、OCI_ATTR_SERVER、OCI_ATTR_ENV、OCI_ATTR_SESSION、OCI_ATTR_ROW_COUNT、OCI_ATTR_CHARSET_FORM、OCI_ATTR_CHARSET_ID、EDB_ATTR_STMT_LEVELETX、OCI_ATTR_MODE__

OCIDescriptorAlloc

ディスクリプタを割り当てて初期化します。

OCIDescriptorFree

割り当てられたディスクリプタを解放します。

OCIHandleAlloc

ハンドルを割り当てて初期化します。

OCIHandleFree

割り当てられたハンドルを解放します。

OCIParamGet

パラメータディスクリプタを取得します。

OCIParamSet

パラメータディスクリプタを設定します。

EDB_ATTR_EMPTY_STRINGS

デフォルトでは、AdvancedServerは空の文字列を NULL 値として扱います。 EDB_ATTR_EMPTY_STRINGS 環境属性を使用して、空の文字列をマッピング際のOCLコネクターの動作を制御できます。マッピングの動作を変更するには、 OCIAttrSet() ファンクションを使用して EDB_ATTR_EMPTY_STRINGS を次のいずれかに設定します。

価値

説明

OCI_DEFAULT

空の文字列をNULL値として扱います。

EDB_EMPTY_STRINGS_NULL

空の文字列をNULL値として扱います。

EDB_EMPTY_STRINGS_EMPTY

空の文字文字列を長さゼロの文字列として扱います。

EDB_ATTR_EMPTY_STRINGS の値を見つけるには、 OCIAttrGet() をクエリー。

EDB_ATTR_HOLDABLE

AdvancedServerは、 WITH HOLD カーソルとして実行するステートメントをサポートしています。 EDB_ATTR_HOLDABLE 属性は、 WITH HOLD カーソルとして実行ステートメントを指定します。 EDB_ATTR_HOLDABLE 属性は、次の3つの値のいずれかに設定できます。

  • EDB_WITH_HOLD - WITH HOLD カーソルとして実行

  • EDB_WITHOUT_HOLD -プロトコルレベルのプリペアドステートメントを使用して実行

  • OCI_DEFAULT -次の定義を参照

あなたは OCIStmt ハンドルや OCIServer ハンドルに属性を設定することができます。あなたは OCIServer ハンドルや OCIStmt ハンドルを作成すると、そのハンドル用 EDB_ATTR_HOLDABLE 属性が OCI_DEFAULT に設定されています。

OCIAttrSet() を呼び出してハンドルの EDB_ATTR_HOLDABLE 属性を変更し、 OCIAttrGet() を呼び出して属性を取得できます。

AdvancedServerは SELECT ステートメントを実行するときに、 OCIServer ハンドルの EDB_ATTR_HOLDABLE 属性を調べ属性。その属性が EDB_WITH_HOLD に設定されている場合、クエリーは WITH HOLD カーソルとして実行されます。

OCIServer ハンドルの EDB_ATTR_HOLDABLE 属性が EDB_WITHOUT_HOLD に設定されている場合、クエリーは通常のプリペアドステートメントとして実行されます。

OCIServer ハンドルで EDB_ATTR_HOLDABLE 属性が OCI_DEFAULT に設定されている場合は、AdvancedServerは OCIServer ハンドルに EDB_ATTR_HOLDABLE 属性の値を使用しています( OCIServerEDB_ATTR_HOLDABLE 属性が EDB_WITH_HOLD に設定されている場合、クエリーの実行 WITH HOLD カーソルとして、そうでない場合は、クエリーは、プロトコルでプリペアドステートメントとして実行されます)。

EDB_HOLD_CURSOR_ACTION

EDB_HOLD_CURSOR_ACTION 属性は、OCLインタフェースを使用した WITH HOLD カーソルの作成方法を変更します。この属性は、次の値のいずれかに設定できます。

  • EDB_COMMIT_AFTER_CURSOR –カーソルの作成後にトランザクションをコミットします

  • EDB_CURSOR_WITHOUT_XACT_BLK –新しいトランザクションチェーンを開始しません

  • OCI_DEFAULT -次の定義を参照

次に、属性値について説明し属性。

OCI_DEFAULT

ステートメントを実行たびに、OCLはデータベースサーバのトランザクション状態を調べます。トランザクションがまだ進行中でない場合、OCLはBEGINステートメントを実行して新しいトランザクションブロックを作成し、指定したステートメントを実行します。トランザクションブロックは、 OCITransCommit() または OCITransRollback() を呼び出すまで開いたままです。

デフォルトでは、データベースサーバは、コミットまたはロールバックするときに開いているカーソルをすべて閉じます。ユーザー(またはOCL)が WITH HOLD 句を含むカーソルを宣言した場合、カーソルの結果セットはデータベースサーバ、そのカーソルからフェッチを続行できます。ただし、トランザクションをロールバックすると、データベースサーバは開いているカーソルを保持しません。 ROLLBACK の後にカーソルからフェッチしようとすると、データベースサーバはエラーをレポートします。

EDB_COMMIT_AFTER_CURSOR

アプリケーションがトランザクションをロールバックした後に WITH HOLD カーソルから読み取る必要がある場合、カーソルを作成する前に EDB_HOLD_CURSOR_ACTIONEDB_COMMIT_AFTER_CURSOR に設定することにより、カーソル作成直後にOCLがトランザクションをコミットように手配できカーソル。例:

ub4        action = EDB_COMMIT_AFTER_CURSOR;

OCIAttrSet(stmt, OCI_HTYPE_STMT, &action, sizeof(action),
  EDB_ATTR_HOLD_CURSOR_ACTION, err);

OCIStmtExecute( ... );

EDB_COMMIT_AFTER_CURSOR を使用すると、保留中の変更がコミットされることを理解することが重要です。

EDB_CURSOR_WITHOUT_XACT_BLK

EDB_COMMIT_AFTER_CURSOR によって追加のコミットが追加されてアプリケーションが正しく実行されない場合は、 EDB_ATTR_HOLD_CURSOR_ACTIONEDB_CURSOR_WITHOUT_XACT_BLK に設定してみてください。このアクションにより、OCLは新しいトランザクションチェーンを開始しません。トランザクションをコミットまたはロールバックした直後に WITH HOLD カーソルを作成すると、カーソルは独自のトランザクションで作成され、データベースサーバはそのトランザクションをコミットし、カーソルは保持されます。

カーソルを宣言する前に、いくつかの他のステートメントを実行場合は、 WITH HOLD カーソルがトランザクションブロック内に作成され、バック圧延することができる-カーソル宣言は、トランザクション内の最初の文でない場合、あなたはまだエラーが発生することを理解することは重要ですエラーが発生した場合(またはアプリケーションが OCITransRollback() を呼び出した場合)。

EDB_HOLD_CURSOR_ACTION は、サーバーレベル( OCIServer )または各ステートメントハンドル( OCIStmt )で設定できることにノートてください。ステートメント属性が OCI_DEFAULT 以外の値に設定されている場合、値はステートメントハンドルから派生します。そうでない場合(ステートメント属性が OCI_DEFAULT に設定されている場合)、値はサーバーハンドルから取得されます。だから、サーバー・ハンドルに属性を設定すると、文ハンドルに OCI_DEFAULT に属性を残すことによって、サーバー全体のデフォルトのアクションを定義することができます。必要に応じて、ステートメントハンドル(またはサーバーハンドル)ごとに異なる値を使用できます。

EDB_ATTR_STMT_LVL_TX

特に指示がない限り、OCLコネクタは、サーバーがエラーを報告するたびに現在のトランザクションを ROLLBACK します。選択した場合、 edb_stmt_level_tx パラメータして自動 ROLLBACK をオーバーライドできます。このパラメーターは、1つ(または複数)のステートメントがトランザクション内でエラーを発生させた場合でも、トランザクション内の変更を保持します。

OCIAttrSet() および OCIAttrGet()OCIServer 属性を使用して、 EDB_ATTR_STMT_LEVEL_TX を有効または無効にできます。デフォルトでは、 edb_stmt_level_tx は無効になっています。 edb_stmt_level_tx を有効にするには、クライアントアプリケーションは OCIAttrSet() を呼び出す必要があります。

OCIServer *server  = myServer;
ub1        enabled = 1;

OCIAttrSet(server, OCI_HTYPE_SERVER, &enabled,
  sizeof(enabled), EDB_ATTR_STMT_LEVEL_TX, err);

edb_stmt_level_tx を無効にするには:

OCIServer *server  = myServer;
ub1        enabled = 0;

OCIAttrSet(server, OCI_HTYPE_SERVER, &enabled,
  sizeof(enabled), EDB_ATTR_STMT_LEVEL_TX, err);

Functionsのバインド、定義、および説明

ファンクション

説明

OCIBindByName

名前でバインドします。

OCIBindByPos

位置でバインドします。

OCIBindDynamic

バインド後に追加の属性を設定します。

OCIBindArrayOfStruct

一括操作のために構造体の配列をバインドします。

OCIDefineArrayOfStruct

配列の属性を指定します。

OCIDefineByPos

出力変数の関連付けを定義します。

OCIDefineDynamic

定義用の追加属性を設定します。

OCIDescribeAny

既存のスキーマオブジェクトを説明します。

OCIStmtGetBindInfo

バインドおよびインジケータ変数名とハンドルを取得し変数。

OCIUserCallbackRegister

ユーザー定義のコールバックを定義します。

ステートメントFunctions

ファンクション

説明

OCIStmtExecute

準備されたSQLステートメントを実行します。

OCIStmtFetch

データの行をフェッチします(非推奨)。

OCIStmtFetch2

データの行をフェッチします。

OCIStmtPrepare

SQLステートメントを準備します。

OCIStmtPrepare2

SQLステートメントを準備します。

OCIStmtRelease

文ハンドルを解放します。

トランザクションFunctions

ファンクション

説明

OCITransCommit

トランザクションをコミットします。

OCITransRollback

トランザクションをロールバックします。

XAFunctions

ファンクション

説明

xaoEnv

OCL環境ハンドルを返します。

xaoSvcCtx

OCLサービスコンテキストを返します。

xaoSvcCtx

次のようにxaoSvcCtxファンクションを使用するオーダーに、 xaoSvcCtx 又は xa_open 文字列フォーマットの拡張が提供されなければなりません。

Oracle_XA{+<required_fields> ...}

required_fields は次のとおりです。

HostName=host_ip_address は、AdvancedServerデータベースのIPアドレスを指定します。

PortNumber=host_port_number は、AdvancedServerが実行されているポート番号を指定します。

SqlNet=dbname はデータベース名前を指定します。

Acc=P/username/password は、データベースのユーザー名とパスワードを指定します。パスワード は省略できます。その場合、フィールドは Acc=P/username/ として指定されます。

AppName=app_id は、アプリケーションを識別する番号を指定します。

以下は、接続文字列の例です。

Oracle_XA+HostName=192.168.1.1+PortNumber=1533+SqlNet=XE+Acc=P/user/password+AppName=1234

日付および日時Functions

ファンクション

説明

OCIDateAddDays

日数を加算または減算します。

OCIDateAddMonths

月数を加算または減算します。

OCIDateAssign

日付を割り当てます。

OCIDateCheck

指定された日付が有効かどうかを確認してください。

OCIDateCompare

2つの日付を比較します。

OCIDateDaysBetween

2つの日付間の日数を見つけます。

OCIDateFromText

文字列を日付に変換します。

OCIDateGetDate

日付の日付部分を取得します。

OCIDateGetTime

日付の時刻部分を取得します。

OCIDateLastDay

月の最終日の日付を取得します。

OCIDateNextDay

翌日の日付を取得します。

OCIDateSetDate

日付の日付部分を設定します。

OCIDateSetTime

日付の時刻部分を設定します。

OCIDateSysDate

現在のシステムの日付と時刻を取得します。

OCIDateToText

日付を文字列に変換します。

OCIDateTimeAssign

日時の割り当てを実行します。

OCIDateTimeCheck

日付が有効かどうかを確認してください。

OCIDateTimeCompare

2つの日時値を比較します。

OCIDateTimeConstruct

日時ディスクリプタを組み立てます。

OCIDateTimeConvert

ある日時タイプを別の日時タイプに変換します。

OCIDateTimeFromArray

サイズOCI_DT_ARRAYLENの配列をOCIDateTimeディスクリプタに変換します。

OCIDateTimeFromText

指定された形式に従って、指定された文字列をOCIDateTimeディスクリプタのオラクル日時型に変換します。

OCIDateTimeGetDate

日時値の日付部分を取得します。

OCIDateTimeGetTime

日時値の時刻部分を取得します。

OCIDateTimeGetTimeZoneName

日時値のタイムゾーン名前部分を取得します。

OCIDateTimeGetTimeZoneOffset

日時値のタイムゾーン(時間、分)部分を取得します。

OCIDateTimeSubtract

2つのdatetime値を入力として受け取り、それらの差をインターバルとして返します。

OCIDateTimeSysTimeStamp

タイムゾーン付きのタイムスタンプとしてシステムの現在の日付と時刻を取得します。

OCIDateTimeToArray

OCIDateTimeディスクリプタを配列に変換します。

OCIDateTimeToText

指定された形式に従って、指定された日付を文字列に変換します。

インターバルFunctions

ファンクション

説明

OCIIntervalAdd

2つのインターバル値を追加します。

OCIIntervalAssign

あるインターバル値を別のインターバル値にコピーします。

OCIIntervalCompare

2つのインターバル値を比較します。

OCIIntervalGetDaySecond

インターバルから日、時間、分、秒、および小数秒を抽出します。

OCIIntervalSetDaySecond

インターバル内の日、時間、分、秒、および小数秒を変更します。

OCIIntervalGetYearMonth

インターバルから年と月の値を抽出します。

OCIIntervalSetYearMonth

インターバルで年と月の値を変更します。

OCIIntervalDivide

OCINumber値によるOCIInterval値の除算を実装します。

OCIIntervalMultiply

OCIInterval値とOCINumber値の乗算を実装します。

OCIIntervalSubtract

別のインターバル値から1つのインターバル値を減算します。

OCIIntervalToText

インターバルから文字の並びを外挿します。

OCIIntervalCheck

インターバル値の妥当性を検証します。

OCIIntervalToNumber

OCIInterval値をOCINumber値に変換します。

OCIIntervalFromNumber

OCINumber値をOCIInterval値に変換します。

OCIDateTimeIntervalAdd

OCIInterval値をOCIDatetime値に追加し、その結果OCIDatetime値を生成します。

OCIDateTimeIntervalSub

OCIDatetime値からOCIInterval値を減算し、OCIDatetime値を生成します。

OCIIntervalFromText

テキスト文字列をインターバルに変換します。

OCIIntervalFromTZ

タイムゾーンの指定をインターバル値に変換します。

数字Functions

ファンクション

説明

OCINumberAbs

絶対値を計算します。

OCINumberAdd

NUMBERを追加します。

OCINumberArcCos

逆余弦を計算します。

OCINumberArcSin

逆正弦を計算します。

OCINumberArcTan

逆正接を計算します。

OCINumberArcTan2

2つのNUMBERの逆正接を計算します。

OCINumberAssign

1つのNUMBERを別のNUMBERに割り当てます。

OCINumberCeil

NUMBERの上限を計算します。

OCINumberCmp

NUMBERを比較します。

OCINumberCos

コサインを計算します。

OCINumberDec

NUMBERをデクリメントします。

OCINumberDiv

2つのNUMBERを分割します。

OCINumberExp

eを指定されたNUMBER乗します。

OCINumberFloor

NUMBERのフロアを計算します。

OCINumberFromInt

整数をオラクルNUMBERに変換します。

OCINumberFromReal

実数をオラクルNUMBERに変換します。

OCINumberFromText

文字列をオラクルNUMBERに変換します。

OCINumberHypCos

双曲線余弦を計算します。

OCINumberHypSin

双曲線正弦を計算します。

OCINumberHypTan

双曲線正接を計算します。

OCINumberInc

NUMBERをインクリメントします。

OCINumberIntPower

指定された基数を整数の累乗にします。

OCINumberIsInt

NUMBERが整数かどうかをテストします。

OCINumberIsZero

NUMBERがゼロかどうかをテストします。

OCINumberLn

自然対数を計算します。

OCINumberLog

任意の底の対数を計算します。

OCINumberMod

モジュロ除算。

OCINumberMul

NUMBERを掛けます。

OCINumberNeg

NUMBERを無効にします。

OCINumberPower

ベースeへのべき乗。

OCINumberPrec

NUMBERを指定された10進数数に丸めます。

OCINumberRound

NUMBERを指定された10進数に丸めます。

OCINumberSetPi

NUMBERをPiに初期化します。

OCINumberSetZero

NUMBERをゼロに初期化します。

OCINumberShift

10で乗算し、指定された10進数数をシフトします。

OCINumberSign

NUMBERの符号を取得します。

OCINumberSin

サインを計算します。

OCINumberSqrt

NUMBERのルートを計算します。

OCINumberSub

NUMBERを引きます。

OCINumberTan

タンジェントを計算します。

OCINumberToInt

NUMBERを整数に変換します。

OCINumberToReal

NUMBERを実数に変換します。

OCINumberToRealArray

NUMBERの配列を実数配列に変換します。

OCINumberToText

NUMBERを文字列に変換します。

OCINumberTrunc

指定した10進数でNUMBERを切り捨てます。

文字列Functions

ファンクション

説明

OCIStringAllocSize

割り当てられた文字列メモリのサイズをバイト単位で取得します。

OCIStringAssign

文字列に割り当て文字列。

OCIStringAssignText

文字列に割り当てテキスト文字列。

OCIStringPtr

文字列ポインタを取得します。

OCIStringResize

文字列メモリのサイズを変更します。

OCIStringSize

文字列サイズを取得します。

カートリッジサービスとファイルI/OインターフェイスFunctions

ファンクション

説明

OCIFileClose

オープンファイルを閉じます。

OCIFileExists

ファイルが存在するかどうかをテストします。

OCIFileFlush

バッファリングされたデータをファイルに書き込みます。

OCIFileGetLength

ファイルの長さを取得します。

OCIFileInit

OCIFileパッケージを初期化します。

OCIFileOpen

ファイルを開きます。

OCIFileRead

ファイルからバッファに読み込みます。

OCIFileSeek

ファイル内の現在の位置を変更します。

OCIFileTerm

OCIFileパッケージを終了します。

OCIFileWrite

buflenバイトをファイルに書き込みます。

LOBFunctions

ファンクション

説明

OCILobRead

LOB値(またはLOB値の一部)を返します。

OCILOBWriteAppend

LOB値にデータを追加します。

OCILobGetLength

LOB値の長さを返します。

OCILobTrim

LOB値の末尾からデータを切り取ります。

OCILobOpen

他のLOB関数が使用するLOB値を開きます。

OCILobClose

LOB値を閉じます。

その他のFunctions

ファンクション

説明

OCIClientVersion

クライアントライブラリのバージョンを返します。

OCIErrorGet

エラーメッセージを返します。

OCIPGErrorGet

libpqまたはサーバーによって報告されたネイティブエラーメッセージを返します。シグネチャは次のとおりです。

剣OCIPGErrorGet(dvoid/hndlp、ub4recordno、OraText/*errcodep、ub4errbufsiz、OraText/ bufp、ub4bufsiz、ub4タイプ)

OCIPasswordChange

パスワードを変更します。

OCIPing

接続とサーバーがアクティブであることを確認します。

OCIServerVersion

オラクルバージョン文字列を取得します。

サポートされているデータ型

ファンクション

説明

ANSI_DATE

ANSI日付

SQLT_AFC

ANSI固定文字

SQLT_AVC

ANSI変数文字

SQLT_BDOUBLE

バイナリダブル

SQLT_BIN

バイナリデータ

SQLT_BFLOAT

バイナリフロート

SQLT_CHR

文字文字列

SQLT_DAT

オラクルの日付

SQLT_DATE

ANSI日付

SQLT_FLT

フロート

SQLT_INT

整数

SQLT_LBI

ロングバイナリ

SQLT_LNG

長い

SQLT_LVB

長いロングバイナリ

SQLT_LVC

ロングロング(文字)

SQLT_NUM

オラクル数値

SQLT_ODT

OCL日付タイプ

SQLT_STR

ゼロ終了文字列

SQLT_TIMESTAMP

タイムスタンプ

SQLT_TIMESTAMP_TZ

タイムタイムゾーン付きのタイムスタンプ

SQLT_TIMESTAMP_LTZ

ローカルタイムゾーンのタイムスタンプ

SQLT_UIN

符号なし整数

SQLT_VBI

VCSフォーマットのバイナリ

SQLT_VCS

可変文字

SQLT_VNU

先行する長さのバイトを持つ数字

SQLT_VST

OCL文字列タイプ