OCL関数リファレンス

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

関数の接続、承認、初期化

機能

説明

OCIBreak

指定されたOCL機能を中止します。

OCIEnvCreate

OCL環境を作成します。

OCIEnvInit

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

OCIInitialize

OCL環境を初期化します。

OCILogoff

セッションを解放します。

OCILogon

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

OCILogon2

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

OCIReset

現在の操作/プロトコルをリセットします。

OCIServerAttach

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

OCIServerDetach

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

OCISessionBegin

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

OCISessionEnd

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

OCISessionGet

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

OCISessionRelease

セッションを解放します。

OCITerminate

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

tnsnames.oraファイルの使用

OCIServerAttach メソッドは、 tnsnames.ora ファイルの dblink パラメーターで指定された接続記述子を使用します。 Oracleデータベースと互換性のある tnsnames.ora ファイルを使用して、データベース接続アドレスを指定します。 Advanced Serverは、ユーザーのホームディレクトリで tnsnames.ora という名前のファイルを検索します。 Advanced Serverがユーザーのホームディレクトリに tnsnames.ora ファイルを見つけられない場合、 TNS_ADMIN で指定されたパスを検索します。

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

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

サンプルに含まれていないパラメーターは、Open Client Libraryによって無視されます。サンプルでは、 SID はポート 5444 の localhost で実行されているクラスター内の 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 の形式で指定します。

ハンドルおよび記述子関数

機能

説明

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

デフォルトでは、Advanced Serverは空の文字列を 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

Advanced Serverは、 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() を呼び出すことで属性を取得できます。

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

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

OCIServer ハンドルの EDB_ATTR_HOLDABLE 属性が OCI_DEFAULT に設定されている場合、Advanced Serverは OCIServer ハンドルの EDB_ATTR_HOLDABLE 属性の値を使用します( ` OCIServer の 0 ``EDB_ATTR_HOLDABLE` に設定され、クエリは` `8``カーソルとして実行されます。それ以外の場合、クエリはプロトコルで準備されたステートメントとして実行されます)。

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_ACTION を EDB_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_ACTION を EDB_CURSOR_WITHOUT_XACT_BLK に設定してみてください。このアクションにより、OCLは新しいトランザクションチェーンを開始しません。トランザクションをコミットまたはロールバックした直後に WITH HOLD カーソルを作成すると、カーソルは独自のトランザクションで作成され、データベースサーバーはそのトランザクションをコミットし、カーソルは持続します。

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

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

EDB_ATTR_STMT_LVL_TX

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

OCIServer 属性を OCIAttrSet() および OCIAttrGet() とともに使用して、 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);

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

機能

説明

OCIBindByName

名前でバインドします。

OCIBindByPos

位置でバインドします。

OCIBindDynamic

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

OCIBindArrayOfStruct

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

OCIDefineArrayOfStruct

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

OCIDefineByPos

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

OCIDefineDynamic

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

OCIDescribeAny

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

OCIStmtGetBindInfo

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

OCIUserCallbackRegister

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

ステートメント関数

機能

説明

OCIStmtExecute

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

OCIStmtFetch

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

OCIStmtFetch2

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

OCIStmtPrepare

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

OCIStmtPrepare2

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

OCIStmtRelease

ステートメントハンドルを解放します。

トランザクション関数

機能

説明

OCITransCommit

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

OCITransRollback

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

XA関数

機能

説明

xaoEnv

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

xaoSvcCtx

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

xaoSvcCtx

xaoSvcCtx関数を使用するには、 xaoSvcCtx または xa_open 接続文字列形式の拡張機能を次のように提供する必要があります。

Oracle_XA{+<required_fields> ...}

ここで、 required_fields は次のとおりです。

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

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

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

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

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

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

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

日付および日時関数

機能

説明

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記述子のOracle日時型に変換します。

OCIDateTimeGetDate

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

OCIDateTimeGetTime

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

OCIDateTimeGetTimeZoneName

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

OCIDateTimeGetTimeZoneOffset

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

OCIDateTimeSubtract

2つの日時値を入力として受け取り、それらの差を間隔として返します。

OCIDateTimeSysTimeStamp

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

OCIDateTimeToArray

OCIDateTime記述子を配列に変換します。

OCIDateTimeToText

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

インターバル関数

機能

説明

OCIIntervalAdd

2つの間隔値を追加します。

OCIIntervalAssign

ある間隔値を別の間隔値にコピーします。

OCIIntervalCompare

2つの間隔値を比較します。

OCIIntervalGetDaySecond

間隔から日、時間、分、秒、および小数秒を抽出します。

OCIIntervalSetDaySecond

間隔内の日、時間、分、秒、および小数秒を変更します。

OCIIntervalGetYearMonth

間隔から年と月の値を抽出します。

OCIIntervalSetYearMonth

間隔で年と月の値を変更します。

OCIIntervalDivide

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

OCIIntervalMultiply

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

OCIIntervalSubtract

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

OCIIntervalToText

間隔から文字列を外挿します。

OCIIntervalCheck

間隔値の妥当性を検証します。

OCIIntervalToNumber

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

OCIIntervalFromNumber

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

OCIDateTimeIntervalAdd

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

OCIDateTimeIntervalSub

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

OCIIntervalFromText

テキスト文字列を間隔に変換します。

OCIIntervalFromTZ

時間帯の指定を間隔値に変換します。

数字関数

機能

説明

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

整数をOracle NUMBERに変換します。

OCINumberFromReal

実数をOracle NUMBERに変換します。

OCINumberFromText

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

OCINumberHypCos

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

OCINumberHypSin

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

OCINumberHypTan

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

OCINumberInc

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

OCINumberIntPower

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

OCINumberIsInt

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

OCINumberIsZero

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

OCINumberLn

自然対数を計算します。

OCINumberLog

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

OCINumberMod

モジュロ除算。

OCINumberMul

NUMBERを掛けます。

OCINumberNeg

NUMBERを無効にします。

OCINumberPower

基数eへのべき乗。

OCINumberPrec

NUMBERを指定された小数点以下の桁数に丸めます。

OCINumberRound

NUMBERを指定された小数位に丸めます。

OCINumberSetPi

NUMBERをPiに初期化します。

OCINumberSetZero

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

OCINumberShift

指定された小数点以下の桁数をシフトして、10を掛けます。

OCINumberSign

NUMBERの符号を取得します。

OCINumberSin

サインを計算します。

OCINumberSqrt

NUMBERの平方根を計算します。

OCINumberSub

NUMBERを引きます。

OCINumberTan

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

OCINumberToInt

NUMBERを整数に変換します。

OCINumberToReal

NUMBERを実数に変換します。

OCINumberToRealArray

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

OCINumberToText

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

OCINumberTrunc

指定された小数位でNUMBERを切り捨てます。

文字列関数

機能

説明

OCIStringAllocSize

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

OCIStringAssign

文字列に文字列を割り当てます。

OCIStringAssignText

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

OCIStringPtr

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

OCIStringResize

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

OCIStringSize

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

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

機能

説明

OCIFileClose

開いているファイルを閉じます。

OCIFileExists

ファイルが存在するかどうかを確認してください。

OCIFileFlush

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

OCIFileGetLength

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

OCIFileInit

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

OCIFileOpen

ファイルを開きます。

OCIFileRead

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

OCIFileSeek

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

OCIFileTerm

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

OCIFileWrite

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

LOB関数

機能

説明

OCILobRead

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

OCILOBWriteAppend

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

OCILobGetLength

LOB値の長さを返します。

OCILobTrim

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

OCILobOpen

他のLOB関数で使用するためにLOB値を開きます。

OCILobClose

LOB値を閉じます。

その他の機能

機能

説明

OCIClientVersion

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

OCIErrorGet

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

OCIPGErrorGet

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

剣OCIPGErrorGet(dvoid / * hndlp、ub4 recordno、OraText / * errcodep、ub4 errbufsiz、OraText / * bufp、ub4 bufsiz、ub4タイプ)

OCIPasswordChange

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

OCIPing

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

OCIServerVersion

Oracleバージョン文字列を取得します。

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

機能

説明

ANSI_DATE

ANSI日付

SQLT_AFC

ANSI固定文字

SQLT_AVC

ANSI可変文字

SQLT_BDOUBLE

バイナリダブル

SQLT_BIN

バイナリデータ

SQLT_BFLOAT

バイナリフロート

SQLT_CHR

文字列

SQLT_DAT

Oracleの日付

SQLT_DATE

ANSI日付

SQLT_FLT

フロート

SQLT_INT

整数

SQLT_LBI

ロングバイナリ

SQLT_LNG

長い

SQLT_LVB

長いロングバイナリ

SQLT_LVC

ロングロング(文字)

SQLT_NUM

Oracle数値

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文字列タイプ