これらの関数は Oracle9, Oracle8, Oracle7 データベースへのアクセスを可能にします。 この拡張モジュールは Oracle Call Interface (OCI) を使用します。
この拡張モジュールは、通常のOracle 拡張モジュールより柔軟性があります。 この拡張モジュールは、グローバルおよびローカルの PHP 変数の Ocacle プレースホルダーへのバインドをサポートします。また、LOB,FILE,ROWID を完全にサポートしており、ユーザー定義の変数が使用可能です。 可能であれば 通常の Oracle 拡張モジュールの代わりにこの拡張モジュールを使用することをお勧めします。
この拡張を使用するために Oracle クライアントライブラリが必要になります。 Windows ユーザは php_oci8.dll を使用するために 少なくとも Oracle 8.1 が必要になるでしょう。
この拡張モジュールを使用する前に Webデーモンのユーザでもある OracleユーザのOracle用環境変数が正しく設定されていることを確認し てください。設定されている必要がある変数を以下に示します。
ORACLE_HOME
ORACLE_SID
LD_PRELOAD
LD_LIBRARY_PATH
NLS_LANG
ORA_NLS33
Webサーバーのユーザ用に環境変数を設定した後、Webサーバーのユーザ (nobody, www)をグループoracleに追加してください。
Webサーバが起動しないか、起動時にクラッシュする場合: Apacheがpthreadライブラリにリンクされているかどうか次のように確認 してください。
# ldd /www/apache/bin/httpd libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000) libm.so.6 => /lib/libm.so.6 (0x4002f000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000) libdl.so.2 => /lib/libdl.so.2 (0x4007a000) libc.so.6 => /lib/libc.so.6 (0x4007e000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)libpthread がこの一覧にない場合、Apacheを再インストールする必要 があります。
UnixWareのようないくつかのシステムでは、libpthreadの代わりに libthreadが使用されています。PHPとApacheは、 EXTRA_LIBS=-lthreadをconfigureに指定する必要があります。
オプション--with-oci8[=DIR]を指定 してPHPをコンパイルする必要があります。ただし、DIRのデフォルトは、 環境変数ORACLE_HOMEの値です。
もし Oracle Instant Client を使用しているならば、オプション --with-oci8-instant-client[=DIR] を使用して PHP を構築する必要があります。 Oracle Instant Client はバージョン 4.3.11 と 5.0.4 で最初にサポートされたことに注意してください。
この拡張モジュールは設定ディレクティブを全く定義しません。
これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。
文の実行モードを指定します。 このモードを使用する場合、 文は自動的にコミットされません。
文の実行モードを指定します。 実際に文を実行したくないが取得一覧の記述は取得したい場合に このモードを使用してください。
文の実行モードを指定します。 文は、oci_execute() コールの後に自動的にコミットされます。
文の取得モードを指定します。 アプリケーションがあらかじめ何行取得すればよいか分かっている場合に 使用されます。 このモードは Oracle リリース 8 以降ではプリフェッチ機能をオフにします。 カーソルは希望する行を取得した後キャンセルされ、 サーバ側のリソースの使用は軽減されます。
oci_bind_by_name() で BFILE をバインドする場合に使用されます。
oci_bind_by_name() で CFILE をバインドする場合に使用されます。
oci_bind_by_name() で CLOB をバインドする場合に使用されます。
oci_bind_by_name() で BLOB をバインドする場合に使用されます。
oci_bind_by_name() で ROWID をバインドする場合に使用されます。
oci_bind_by_name() で oci_new_descriptor() によってあらかじめ割り当てられたカーソルをバインドする場合に使用されます。
oci_bind_by_name() で 名前付けされたデータ型をバインドする場合に使用されます。 注意: PHP < 5.0 では OCI_B_SQLT_NTY と呼ばれます。
OCI_B_BFILE と等価です。
OCI_B_CFILEE と等価です。
OCI_B_CLOB と等価です。
OCI_B_BLOB と等価です。
OCI_B_ROWID と等価です。
OCI_B_NTY と等価です。
oci_fetch_all() のデフォルトのモードです。
oci_fetch_all() での代わりのモードです。
oci_fetch_all() と oci_fetch_array() で結果を連想配列で取得するために使用されます。
oci_fetch_all() と oci_fetch_array() で結果を配列で取得するために使用されます。
oci_fetch_all() と oci_fetch_array() で結果を配列と連想配列の両方で取得するために使用されます。
oci_fetch_array() でフィールド値が NULL の場合に空の配列要素を取得するために使用されます。
oci_fetch_array() でディスクリプタの代わりに LOB の値を取得するために使用されます。
このフラグは oci_new_descriptor() に新しい FILE ディスクリプタを初期化するように伝えます。
このフラグは oci_new_descriptor() に新しい LOB ディスクリプタを初期化するように伝えます。
このフラグは oci_new_descriptor() に新しい ROWID ディスクリプタを初期化するように伝えます。
OCI_DTYPE_FILE と等価です。
OCI_DTYPE_LOB と等価です。
OCI_DTYPE_ROWID と等価です。
コマンドラインで実行するのと同様な手法により、ストアドプロシージャ に簡単にアクセス可能です。
例 2. ストアドプロシージャの使用法
|