英語マニュアル
3.6.6 XA関数
3.6.6.1 xaoSvcCtx
3.6.8 区間関数
3.6.9 数関数
3.6.12 LOB関数
OCIコネクタは、Oracle Call Interfaceのに似たAPIを提供します。 Oracle Call Interfaceを使用するように作成されたアプリケーションは、Advanced Serverデータベースサーバーと対話するために、EnterpriseDBのOCIコネクタを使用して再コンパイルできます。
以下の説明において、 用語は、言語キーワード、ユーザ指定の値、リテラルなどであり得る任意の単語または単語のグループを指す。用語の正確な意味は、それが使用される文脈に依存する。
•
イタリック体のフォント は、通常は初めて定義する文章の中に新しい用語を導入します。
•
Fixed-width (mono-spaced) font は、 SQL コマンド、例で使用されている特定のテーブル名および列名、プログラミング言語のキーワード など、文字通りに指定する必要がある用語に使用され ます 。例えば、 SELECT * FROM emp;
•
Italic fixed-width font は、ユーザーが実際の使用法で値を置き換える必要がある用語に使用されます。例えば、 DELETE FROM table_name ;
•
角括弧[]は、囲まれた用語の1つまたはすべてを置換できることを示します。たとえば、 [ a | b ] 、「 a 」または「 b 」のいずれかを選択するか、または両方を選択しないことを意味します。
•
中括弧{}は、囲まれた選択肢のうち1つだけを指定する必要があることを示します。たとえば、 { a | b }正確に一つ「の意味a 」又は「 b 」を指定しなければなりません。
•
省略記号...は、前の用語が繰り返される可能性があることを示します。たとえば、 [ a | b ] ...は、シーケンス「 baaba 」があるかもしれないことを意味します。
•
•
以前は今、アプリケーション・コードを変更せずに、最小限にEDBのPostgres Advanced ServerまたはOracleデータベースのいずれかで動作することができ、「固定」されたアプリケーション- オープンクライアントライブラリでは、Oracle Call Interfaceのでアプリケーションの相互運用性を提供します。 Open Client LibraryのEnterpriseDB実装はCで書かれています。
次の図は、 Open Client LibraryとOracle Call Interfaceのアプリケーションスタックを比較したものです。
Advanced Server用のリポジトリファイルを作成するパッケージの名前は edb-repoです。このパッケージは次の場所からダウンロードできます。
リポジトリ設定ファイルをダウンロードした後、スーパーユーザー特権を引き受け 、次のコマンドを使用してリポジトリ設定ファイルを作成します。
インストーラによって、 edb という名前のリポジトリ設定ファイルが作成されます 。 repo ;ファイルは/etc/yum.repos.dます。このファイルには、各EnterpriseDBリポジトリのエントリが含まれています。コネクタをインストールするには、 enterprisedb - toolsリポジトリのエントリを有効にする必要があります。
1。
baseurl仕様の user _ nameとpasswordプレースホルダをあなたのユーザ名とリポジトリのパスワードに置き換えてください。
2。
置き換え 0の隣にenabledして1 。
リポジトリー構成ファイルの内容を変更したら、 yum installコマンドを使用してコネクターをインストールできます。以下のコマンドを使用してください。
各コマンドは /etc/zypp/repos.dディレクトリにリポジトリ設定ファイルを作成します 。ファイル名は次のとおりです。
リポジトリ設定ファイルを作成したら、 zypper refreshコマンドを使用してSLESホスト上のメタデータを更新し、EnterpriseDBリポジトリを含めます。
入力を求められたら User NameとPassword 、EnterpriseDBのリポジトリ用の接続の資格情報を提供しています。認証情報が必要な場合は、EnterpriseDBに連絡してください。
Language Selectionポップアップが開いたら、インストール言語を選択し、 OKをクリックしてSetupウィンドウに進みます(図2.1)。
Nextをクリックして続けます。

[ Installation Directory ]ダイアログ(図2.2を参照)を使用してコネクタをインストールするディレクトリを指定し、[ Nextへ]をクリックして続行します。
InstallのReadyダイアログ(図2.3参照)でNextをクリックし to Installを開始します。ポップアップダイアログがインストールウィザードの進行状況を確認します。
セットアップが完了したことがウィザードから通知されたら、[ Finish ]ボタンをクリックしてダイアログをFinishます(図2.4を参照)。
StackBuilder Plusが開いたら、画面上の指示に従います。ツリーコントロールの[ Database Driversノードから[ EnterpriseDB OCI Connector ]オプションを選択します(図2.6を参照)。
[//][ host ][: port ][/ dbname ]
postgres://[ user [: password ]@][ host ][: port ][/ dbname ]
[?
param1 = value1 &...]
postgresql://[ user [: password ]@][ host ][: port ][/ dbname ]
[?
param1 = value1 &...]
userは接続ユーザーの名前です。
passwordは、接続しているユーザーに関連付けられているパスワードです。
hostは、接続先のホスト名またはIPアドレスです。 IPV6アドレスを指定するには、アドレスを角括弧で囲みます。
portは接続しているポート番号です。
dbnameは、接続しているデータベースの名前です。
paramx = valuexペアは、追加の(アプリケーション固有の)接続プロパティを指定します。
たとえば、次の各接続文字列は、IPアドレス10.0.0.4システムのポート5444でedbデータベースへの接続を確立します。
ファイルは oci/libサブディレクトリにインストールされてい oci/lib 。
次の例では、Linux環境でサンプルプログラム edb_demo.cをコンパイルしてリンクします。 edb_demo.cは、 oci/samplesサブディレクトリにあります。
1。
ORACLE_HOMEおよびEDB_HOME環境変数を設定します。
設定し ORACLE_HOME Oracleホーム・ディレクトリの完全なパス名に。
EDB_HOMEをホームディレクトリの完全パス名に設定します。
2。
LD_LIBRARY_PATHをlibpthread.soパスに設定します。デフォルトではlibpthread 。 soに位置しています/lib64 。
3。
Advanced Server Open Clientライブラリを含めるには、 LD_LIBRARY_PATHを設定します。デフォルトでは、 libiconv.so.2は$EDB_HOME/oci/libます。
Advanced Server Open Clientライブラリは REF の使用をサポートします。 Oracleと互換性のあるPL / SQLプロシージャの OUT パラメータ としての CURSOR 。以下のAPIを通じてサポートが提供されます。
OCIコネクタは SQLT_RSETデータ型もサポートします。
次の例は、カーソルを開き、 REF CURSORを出力パラメータとして返すストアドプロシージャを呼び出す方法を示しています。コード・サンプルでは、 openCursorという名前のPL / SQLプロシージャ( REF CURSOR型のOUTパラメータを持つ)がデータベース・サーバー上に作成されており、必要なハンドルが割り当てられていることを前提としています。
PL / SQLの openCursor OUTパラメータをバインドします。
openCursorプロシージャを呼び出すには、 stmtOpenRefCursorステートメント・ハンドルを使用します。
この時点で、 stmtUseRefCursorステートメント・ハンドルにはカーソルへの参照が含まれています。情報を取得するには、参照カーソルの出力変数を定義します。
OCIServerAttach方法はで指定された接続記述子使用dblinkのパラメータtnsnames 。 oraファイルtnsnames使用してください。データベース接続アドレスを指定するための、Oracleデータベースと互換性のあるoraファイル。 Advanced Serverはユーザーのホームディレクトリでtnsnamesという名前のファイルを検索します。 ora 。 Advanced Serverがtnsnames見つけられない場合ユーザーのホームディレクトリにあるoraファイルは、 TNS_ADMIN指定されたパスを検索します。
サンプルの tnsnames 。 oraファイルに含まれるもの:
サンプルに含まれていないパラメータは、Open Client Libraryによって無視されます。サンプルでは、 SIDはポート5444サーバー「localhost」で実行されているクラスタ内のedbという名前のデータベースを参照します。
交流プログラム呼び出し OCIServerAttach使用tnsnames 。 oraファイルは次のようになります。
tnsnames がない場合 ora file、 //localhost:5444/edbx形式で接続文字列パラメータを指定します。
Get handle attributes. Advanced server supports the following handle attributes: 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_MODULE
Set handle attributes. Advanced server supports the following handle attributes: 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_MODULE , OCI_ATTR_PREFETCH_ROWS
デフォルトでは、Advanced Serverは空の文字列を NULL値として扱います。 EDB_ATTR_EMPTY_STRINGS環境属性を使用して、空の文字列をマッピングするときのOCIコネクタの動作を制御できます。マッピング動作を変更するには、 OCIAttrSet()関数を使用してEDB_ATTR_EMPTY_STRINGSを次のいずれかに設定します。
EDB_ATTR_EMPTY_STRINGS の値を検索するには 、 OCIAttrGet()問い合せます。
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 。
あなたが変更することができ EDB _ ATTR _ HOLDABLE呼び出すことにより、ハンドルの属性OCIAttrSet()して呼び出すことで属性を取得OCIAttrGet() 。
Advanced Serverは SELECT文を実行するときに、 OCIServerハンドルのEDB_ATTR_HOLDABLE属性を調べます。その属性がEDB_WITH_HOLDに設定されてEDB_WITH_HOLD場合、クエリはWITH HOLDカーソルとして実行されます。
場合 EDB_ATTR_HOLDABLE内の属性OCIServerハンドルに設定されてEDB_WITHOUT_HOLD 、クエリは、通常のプリペアドステートメントとして実行されます。
OCIServerハンドルの EDB_ATTR_HOLDABLE属性がOCI_DEFAULTに設定されている場合、Advanced ServerはOCIServerハンドルのEDB_ATTR_HOLDABLE属性の値を使用します( EDB_ATTR_HOLDABLE属性がOCIServerに設定されているEDB_WITH_HOLDは、クエリはWITH HOLDカーソルとして実行されます。クエリはプロトコル準備済みステートメントとして実行されます。
EDB_HOLD_CURSOR_ACTION属性は途中変更WITH HOLD OCIインタフェースを使用して作成されたカーソルを。この属性は、次のいずれかの値に設定できます。
•
EDB_COMMIT_AFTER_CURSOR - カーソル作成後にトランザクションをコミットする
•
EDB_CURSOR_WITHOUT_XACT_BLK - 新しいトランザクションチェーンを開始しません
•
OCI_DEFAULT - 以下の定義を参照
文を実行するたびに、OCIはデータベースサーバのトランザクション状態を調べます。トランザクションがまだ進行中でない場合、OCIは BEGIN文を実行して新しいトランザクションブロックを作成してから、指定した文を実行します。トランザクション・ブロックは、 OCITransCommit()またはOCITransRollback()をコールするまでオープンされたままです。
デフォルトでは、データベースサーバは、コミットまたはロールバック時に開いているカーソルをすべて閉じます。自分(またはOCI)が WITH HOLD句を含むカーソルを宣言した場合、カーソル結果セットはデータベースサーバに永続化され、引き続きそのカーソルからフェッチすることができます。ただし、トランザクションをロールバックしても、データベースサーバは開いているカーソルを保持しません。 ROLLBACK後にカーソルからフェッチしようとすると、データベースサーバはエラーを報告します。
トランザクションをロールバックした後でアプリケーションが WITH HOLDカーソルから読み取る必要がある場合は、カーソルを作成する前にEDB_HOLD_CURSOR_ACTIONをEDB_COMMIT_AFTER_CURSORに設定することで、OCIがカーソルを作成した直後にトランザクションをコミットするようにEDB_COMMIT_AFTER_CURSORできます。例えば:
EDB_COMMIT_AFTER_CURSOR を使用すると、保留中の変更がコミットされることを理解することが重要です。
EDB_COMMIT_AFTER_CURSOR によって追加された追加のコミットでアプリケーションが正しく実行されない場合は、 EDB_ATTR_HOLD_CURSOR_ACTIONをEDB_CURSOR_WITHOUT_XACT_BLK設定してEDB_ATTR_HOLD_CURSOR_ACTIONてEDB_CURSOR_WITHOUT_XACT_BLK 。これにより、OCIは新しいトランザクションチェーンを開始しません。トランザクションをコミットまたはロールバックした直後にWITH HOLDカーソルを作成すると、そのカーソルはそれ自身のトランザクション内で作成され、データベースサーバはそのトランザクションをコミットし、カーソルは持続します。
カーソル宣言がトランザクション内の最初のステートメントでない場合でもエラーが発生する可能性があることを理解することが重要です。カーソルを宣言する前に他のステートメントを実行すると、 WITH HOLDカーソルがトランザクションブロック内に作成されロールされる可能性があります。エラーが発生した場合(またはアプリケーションがOCITransRollback()コールした場合)
あなたが設定できることに注意してください EDB_HOLD_CURSOR_ACTIONサーバーレベル(上OCIServer )または各ステートメントハンドル(のためOCIStmt )。文の属性がOCI_DEFAULT以外の値に設定されている場合、値は文のハンドルから導出されます。それ以外の場合(文の属性がOCI_DEFAULT設定されている場合)、値はサーバーのハンドルから取得されます。そのため、サーバー・ハンドルに属性を設定し、文ハンドルでその属性をOCI_DEFAULTに設定したままにすることで、サーバー全体のデフォルトのアクションを定義できます。あなたが適当であると思うようにあなたはそれぞれのステートメントハンドル(またはサーバーハンドル)に対して異なる値を使うことができます。
特に指示がない限り 、サーバーからエラーが報告されると、OCIコネクタは現在のトランザクションを ROLLBACKします。選択した場合は、 edb_stmt_level_txパラメーターを使用して自動ROLLBACKをオーバーライドできます。これにより、1つ(または複数)のステートメントでトランザクション内でエラーが発生した場合でも、トランザクション内での変更が保持されます。
OCIServer OCIAttrSet()およびOCIAttrGet() OCIServer属性を使用すると、 OCIServerを有効または無効にEDB_ATTR_STMT_LEVEL_TXます。デフォルトでは、 edb_stmt_level_txは無効になっています。 edb_stmt_level_txを有効にするには、クライアント・アプリケーションはOCIAttrSet()コールする必要があります。
edb_stmt_level_tx を無効にするには
3.6.6 XA関数
3.6.6.1 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は省略passwordことができます。その場合、フィールドはAcc=P/username/として指定されAcc=P/username/ 。
AppName= app_idは、アプリケーションを識別する番号を指定します。
Convert an array of size OCI_DT_ARRAYLEN to an OCIDateTime descriptor.
descriptor according to the specified format. Convert the given string to Oracle datetime type in the OCIDateTime descriptor according to the specified format. Convert the given string to Oracle datetime type in the descriptor according to the specified format.
OCIDateTime descriptor to an array. Convert an descriptor to an array.
3.6.8 区間関数
OCIInterval values by OCINumber values. Implements division of values.
OCINumber values. Implements multiplication of OCIInterval values by Implements multiplication of values.
OCINumber value. OCIInterval value into a Converts an value.
OCIInterval value. OCINumber value into an Converts a value.
Adds an OCIInterval value to an OCIDatetime value, resulting in an OCIDatetime value.
Subtracts an OCIInterval value from an OCIDatetime value, resulting in an OCIDatetime value.
3.6.9 数関数
NUMBER Adds s.
Assign one NUMBER to another. NUMBER to another. Assign one to another.
NUMBER Compare s.
Decrement a NUMBER .
Increments a NUMBER .
NUMBER is an integer. Test if a is an integer.
NUMBER is zero. Test if a is zero.
NUMBER Multiply s.
NUMBER Negate a .
Round a NUMBER to a specified number of decimal places.
Round a NUMBER to a specified decimal place.
NUMBER to Pi. Initialize a to Pi.
NUMBER to zero. Initialize a to zero.
NUMBER Subtract s.
NUMBER to an integer. Convert a to an integer.
NUMBER to a real. Convert a to a real.
NUMBER Convert an array of to a real array. Convert an array of to a real array.
NUMBER to a string. Converts a to a string.
at a specified decimal place. NUMBER at a specified decimal place. Truncate a at a specified decimal place.
OCIFile package. Initialize the package.
OCIFile package. Terminate the package.
buflen bytes into the file. Write bytes into the file.
3.6.12 LOB関数
次の表に、OCIコネクタで定義されているエラーコードのマッピングを示します。データベースサーバからエラーコードまたは状態(1列目または2列目に表示)が報告されると、OCIはその値を3列目に表示されている互換性のある値に変換します。