この付録では、Windows2003、Windows 2000およびWindows XPの各オペレーティング・システムに該当するOCIの機能のみ説明します。Windows NTは、サポート対象外になりました。
この章は、次の項目で構成されています。
Oracle Call Interface for Windowsパッケージには、次のものが含まれています。
Oracle Call Interface(OCI)
Oracle Universal Installer
OCIアプリケーションのコンパイル用ヘッダー・ファイル
OCIアプリケーションのリンク用ライブラリ・ファイル
OCIアプリケーションの構築方法を示すサンプル・プログラム
OCI for Windowsパッケージには、OCIプログラムをリンクするために必要な追加ライブラリが含まれています。
OCIは、デフォルトのOracle Databaseインストールに含まれます。Oracle Databaseをインストールする場合、Oracle Universal Installerにより、ORACLE_BASE\ORACLE_HOME
ディレクトリの下のoci
、bin
およびprecomp
ディレクトリにOCIファイルが作成されます。これらのファイルには、OCIアプリケーションのリンクおよび実行に必要なライブラリ・ファイル、およびOracle Formsなどの他のOracle for Microsoft Windows製品へのリンクに必要なライブラリ・ファイルが含まれます。
ORACLE_BASE¥ORACLE_HOME
ディレクトリには、OCIに関連のある次のディレクトリが含まれています。
OCIのインストール時に、サンプル・プログラムのセットおよび対応するプロジェクト・ファイルがORACLE_BASE¥ORACLE_HOME
¥oci¥samples
サブディレクトリにコピーされます。OCIのインストールの成功を確認し、OCIアプリケーションの開発手順を理解するために、これらのサンプル・プログラムをビルドし、実行することをお薦めします。
サンプルをビルドするには、コマンド・プロンプトでバッチ・ファイル(make.bat)
を実行します。たとえば、cdemo1.c
サンプルをビルドするには、samples
ディレクトリで次のコマンドを入力します。
C:> make cdemo1
これらのサンプル・プログラムの使用後、削除しても構いません。
ociucb.c
は、ociucb.bat
を使用してコンパイルします。このバッチ・ファイルはDLLを作成し、ORACLE_BASE¥ORACLE_HOME
¥bin
ディレクトリに格納します。ユーザー・コールバック関数をロードするには、環境レジストリ変数ORA_OCI_UCBPKG
にOCIUCB
を設定します。
OCIアプリケーションをコンパイルする際には、適切なOCIヘッダー・ファイルを含める必要があります。ヘッダー・ファイルは、¥ORACLE_BASE¥ORACLE_HOME
¥oci¥include
ディレクトリに格納されています。
Microsoft Visual C++については、「オプション」ダイアログ・ボックスのライブラリのセクションで、¥ORACLE_BASE¥ORACLE_HOME¥oci¥lib¥msvc
を指定する必要があります。Borlandコンパイラについては、¥ORACLE_BASE¥ORACLE_HOME¥oci¥lib¥bc
を指定します。
たとえば、Microsoft Visual C++ 8.0を使用している場合、「ツール」メニュー内にある「オプション」ダイアログの「ディレクトリ」ページで、適切なパス\oracle\db_1\oci\include
を入力する必要があります。
注意: 現行のOCIリリースでは、Microsoft Visual C++ 7.1以上のみがサポートされています。 |
関連項目: アプリケーションのコンパイル方法および特別なコンパイラ・オプションに関する固有の情報は、コンパイラのドキュメントを参照してください。 |
OCIコールは、Oracleが提供するDynamic Link Libraries(DLL)で実装されます。DLLはORACLE_BASE¥ORACLE_HOME
¥bin
ディレクトリに格納されており、Required Support Files(RSF)の一部です。
Microsoft Compiler用のoci.lib
インポート・ライブラリのみ提供しています。BorlandコンパイラもOracleによってOCIでの使用がサポートされています。リリースごとの再リンクやコンパイルを回避するために、アプリケーションを必ずoci.lib
にリンクすることをお薦めします。
oci.lib
をMicrosoft Compilerとともに使用する場合、特別なリンク・オプションを指定する必要はありません。
アプリケーションをoci.lib
にリンクすることをお薦めします。これにより、Oracle DLLの正しいバージョンがロードされます。
LoadLibrary()
により、次のディレクトリがこの順序で検索されます。
アプリケーションのロード元ディレクトリ、またはoci.dll
が格納されているディレクトリ
現行ディレクトリ
Windows
32ビットWindowsシステム・ディレクトリ(system32)
。このディレクトリへのパスを取得するには、GetWindowsDirectory()
関数を使用します。
16ビットWindowsディレクトリ(system)
。このディレクトリへのパスを取得するためのWin32関数は存在しませんが、検索されます。
PATH環境変数にリスト表示されているディレクトリ
OCIアプリケーションを実行する際、OCIアプリケーションを実行するコンピュータ上に、対応するRequired Support Files(RSF)のセット全体がインストールされていることを確認してください。
XA Application Program Interface(API)は、通常、Oracleデータベースが次のようなトランザクション処理(TP)モニターと対話するために使用されます。
BEA Tuxedo
IBM Transarc Encina
IBM CICS
また、TPモニター文をクライアント・プログラムでも使用できます。XA APIの使用は、OCIによってサポートされています。
Oracle XAライブラリは、Enterprise Editionの一部として自動的にインストールされます。表D-2に、Oracleホーム・ディレクトリに作成されるコンポーネントを示します。oci.lib
にはXAエクスポートが含まれています。
OCIプログラムのコンパイルおよびリンクの手順
Microsoft Visual C++またはBorlandコンパイラを使用してprogram
.c
をコンパイルします。必ずパスにORACLE_BASE¥ORACLE_HOME
¥rdbms¥xa
を含めてください。
program
.obj
を、表D-3に示されている次のライブラリとリンクします。
program
.exe
を実行します。
データベースでは、XAの動的な登録をサポートしています。XAの動的な登録は、XA準拠TPモニターとインタフェースをとるアプリケーションのパフォーマンスを改善します。TPモニターがWindows上でOracleデータベースに対しXAの動的な登録を使用するようにするには、TPモニターが稼働しているWindowsコンピュータに、環境変数またはレジストリ変数のいずれかを追加する必要があります。手順は、次のいずれかの項を参照してください。
コマンド・プロンプトで環境変数を追加すると、現行セッションのみが影響を受けます。
環境変数の追加
TPモニターがインストールされているコンピュータから、コマンド・プロンプトで次のように入力します。
C:\> set ORA_XA_REG_DLL = vendor.dll
vendor
.dll
は、ベンダーが提供するTPモニターのDLLです。
レジストリ変数を追加すると、Windowsコンピュータ上の全セッションが影響を受けます。1つのTPモニターのみが稼働しているコンピュータでは、この方法が便利です。
TPモニターがインストールされているコンピュータに移動します。
コマンド・プロンプトで次のように入力します。
C:\> regedt32
「レジストリ エディタ」ウィンドウが表示されます。
HKEY_LOCAL_MACHINE¥SOFTWARE¥ORACLE¥HOME
ID
に移動します。
「編集」メニューの「値の追加」オプションを選択します。「値の追加」ダイアログ・ボックスが表示されます。
「値の名前」テキスト・ボックスに「ORA_XA_REG_DLL
」と入力します。
「データ型」リスト・ボックスで「REG_EXPAND_SZ
」を選択します。
「OK」を選択します。「文字列エディタ」ダイアログ・ボックスが表示されます。
「文字列」フィールドに「vendor
.dll
」と入力します。vendor
.dll
は、ベンダーが提供するTPモニターのDLLです。
「OK」を選択します。レジストリ・エディタによってパラメータが追加されます。
「レジストリ」メニューから「レジストリ エディタの終了」を選択します。
レジストリが終了します。
Object Type Translator(OTT)は、データベースに作成されて格納されているオブジェクトのC構造体表現の作成に使用します。
オブジェクトを利用するためには、データベースに対してOTTを実行します。これにより、C構造体を含むヘッダー・ファイルが生成されます。たとえば、データベースにPERSON
型が作成された場合、PERSON
の属性に対応する要素を持つC構造体がOTTにより生成されます。さらに、C構造体のインスタンスのNULL情報を表現するNULLインジケータ構造体が作成されます。
INTYPEファイルは、どのオブジェクト型を変換する必要があるかをOTTに指示します。また、このファイルは生成された構造体の命名も制御します。
注意: Oracle Database 10g リリース1より、INTYPEファイル・アシスタントは使用できません。 |
CASE=LOWER
など、INTYPE
ファイル内のCASE
仕様は、INTYPEファイルのTYPE
またはTRANSLATE
文によって特別にリストされていないC識別子にのみ適用されます。INTYPEファイルでは、TYPE Person
およびType PeRsOn
などのように、型名を適切な大/小文字で入力することが重要です。
Windowsでは、OTTはコマンドラインから起動できます。さらに、構成ファイルは、コマンドラインで名前を付けることができます。Windowsの場合、構成ファイルは、ORACLE_BASE¥ORACLE_HOME
¥precomp¥admin
に格納されているottcfg.cfg
です。