プライマリ・コンテンツに移動
Oracle® Database Oracleプリコンパイラのためのプログラマーズ・ガイド
12c リリース1 (12.1)
B71398-03
目次へ移動
目次
索引へ移動
索引

前
次

OCI(Oracle Call Interface)コール

Oracleプリコンパイラを使用すれば、ホスト・プログラムにOCIコールを埋め込むことができます。それには次の手順を実行します。

  1. OCIログイン・データ領域(LDA)を宣言部の外で宣言します。
  2. OCIコールOLOGではなく、埋込みSQL文CONNECTを使用してOracleに接続します。
  3. Oracleランタイム・ライブラリ・ルーチンSQLLDAをコールして、LDAに接続情報を格納します。

こうして、OracleプリコンパイラとOCIでは、両者が連動していることが認識されます。ただし、Oracleカーソルは共有されません。

Oracleランタイム・ライブラリにより接続が管理され、HDAがメンテナンスされるため、OCIホスト・データ領域(HDA)の宣言を意識する必要はありません。

LDAの設定について

OCIコールを発行してLDAを設定します。

SQLLDA(lda);

ldaでは、LDAデータ構造体を指定します。このコールの書式は、言語によって異なります。CONNECT文が失敗した場合、lda内のlda_rcフィールドはエラーを示す1012に設定されます。

リモートの複数接続

SQLLDAに対するコールにより、最後に実行されたSQL文で使用した接続のLDAが設定されます。追加の接続に必要な別のLDAを設定するには、各CONNECTの後に別のldaを指定してSQLLDAをコールしてください。次の例では、2つの非デフォルト・データベースに同時に接続します。

EXEC SQL BEGIN DECLARE SECTION;
 username CHARACTER(10);
 password CHARACTER(10);
 db_string1 CHARACTER(20);
 db_string2 CHARACTER(20);
EXEC SQL END DECLARE SECTION;
lda1 INTEGER(32);
lda2 INTEGER(32);
set username = 'SCOTT';
set password = 'TIGER';
set db_string1 = 'D:NEWYORK-NONDEF1';
set db_string2 = 'D:CHICAGO-NONDEF2';
-- give each database connection a unique name
EXEC SQL DECLARE db_name1 DATABASE;
EXEC SQL DECLARE db_name2 DATABASE;
-- connect to first nondefault database
EXEC SQL CONNECT :username IDENTIFIED BY :password
 AT db_name1 USING :db_string1;
-- set up first LDA for OCI use
SQLLDA(lda1);
-- connect to second nondefault database
EXEC SQL CONNECT :username IDENTIFIED BY :password
 AT db_name2 USING :db_string2;
-- set up second LDA for OCI use
SQLLDA(lda2);

db_name1およびdb_name2は、ホスト変数ではないので、宣言部で宣言しないでください。これらは、後からSQL文で名前によりデータベースを参照できるように、2つの非デフォルト・ノードにあるデフォルト・データベースを指定する場合にのみ使用します。