|
OracleCI Unit |
Top Previous Next |
|
OracleCIユニットはOracle Call Interface (OCI)を含みます。OCIはSQL*NetかNet8の一部で、そしてDLLとして提供されます。 このDLLはOracleのbinディレクトリに位置しora73.dll (for SQL*Net 2.3), ora803.dll (for Net8 8.0.3), or oci.dll (for Net8 8.1 and later)のような名前が付けられています。 OCI DLLはデータベースへ初めてログオンを試みた時に初期化されます(一度だけ)。 次の変数はOCI DLLに関係があります: OCI70: Boolean = False; // OCI 7.0 functions detected OCI72: Boolean = False; // OCI 7.2 functions detected OCI73: Boolean = False; // OCI 7.3 functions detected OCI80: Boolean = False; // OCI 8.0 functions detected OCI81: Boolean = False; // OCI 8.1 functions detected OCI90: Boolean = False; // OCI 9.0 functions detected OCI92: Boolean = False; // OCI 9.2 functions detected OracleHomeName: string = ''; // Name of Oracle Home OCIDLL: string = ''; // Name of OCI DLL
決してOCI70..OCI81 booleanを設定しないでください! これらは内部的にどの関数が使用可能かを表すために使われています。OCI80 booleanはアプリケーション内でOracle8機能 (LOB'sとObjects)を使えるかどうかを決定します。しかしながらOracle8に接続できるかどうかも知っていなければなりません。 OracleHomeName変数は、使いたいと思うOracle Homeの名前に設定できます。これはOracle Homeへのレジストリパスでもなければ、ディレクトリパスでもありません。それはORACLE_HOME_NAMEレジストリキーの値です。これはOracleのHome Selectorユーティリティと共に使われる名前と等しくなります。OracleHomeList関数を通じてoracle home nameのリストを取得できます。 OCIDLL 文字列を使って使われているOCI DLLの正確なファイルネームを判断することが出来ます。 この変数を使って、特定のバージョンのSQL*Netを読み込ますように出来ます。 単純にDLLInitが呼ばれる前に希望するDLLファイルネームを設定します。OCIDLL文字列はDirect Oracle Accessに対するもので、Vendor Initに対するBDEです。 次の関数はOCI DLLと関係があります: procedure InitOCI; この関数はDLLInit を呼び出すことで初期化し、結果をチェックし、失敗した時には適切な例外を発生させます。 function DLLLoaded: Boolean; OCI DLLが読み込まれ初期化されたかどうかを表します。 function DLLInit: Integer; OCI DLLを読み込み、初期化します。 次のことが起こります:
DLLInit関数は次の値を持つ整数を返します:
procedure DLLExit; DLLInitで初期化されたOCI DLLを解放します procedure OracleHomeList: TStringList; oracle home name付きでTstringListインスタンスを返します。 OCIが初期化される前に、OracleHomeNameをその中の一つの名前で設定できます。 function OracleAliasList: TStringList; tnsnames.ora file内で定義されたデータベースエイリアス付きのTstringListインスタンスを返します。 このリストを解放しないで下さい、 これは内部的にTOracleSession.LogonDatabaseプロパティとTOracleLogonダイアログに使われています。Net8が使われているかどうかを知る必要があるので、この関数は初めにInitOCIを呼び出してOCIを初期化します。 function TNSNames: string; tnsnames.ora fileの名前を返します。 Net8が使われているかどうかを知る必要があるので、この関数はまず最初にInitOCIを呼び出してOCIを初期化します。 |