For use PHPv5 functions in PHPv4 i use simple script:
<?php
$funcs=array(
'oci_connect'=>'OCILogon',
'oci_parse'=>'OCIParse',
'oci_execute'=>'OCIExecute',
'oci_fetch'=>'OCIFetch',
'oci_num_fields'=>'OCINumCols',
'oci_field_name'=>'OCIColumnName',
'oci_result'=>'OCIResult',
'oci_free_statement'=>'OCIFreeStatement',
);
// yoy can add yours pairs of funcs.
foreach ($funcs as $k=>$v)
{
if (!function_exists($k))
{
$arg_string='$p0';
for ($i=1;$i<20;$i++) {
$arg_string.=',$p'.$i;
}
eval ('function '.$k.' () {
list('.$arg_string.')=func_get_args();
return '.$v.'('.$arg_string.');
}
');
}
}
?>
simple, but it work. :-)
CIII. Oracle 関数
導入
これらの関数は Oracle コールインターフェース (OCI) を使用した Oracle 10, Oracle 9, Oracle 8, そして Oracle 7 データベースへのアクセスを可能にします。 これらは PHP 変数の Oracle プレースホルダへのバインドをサポートし、 LOB、FILE、ROWID を完全にサポートしており、 ユーザー定義の変数が使用可能です。
要件
この拡張を使用するために Oracle クライアントライブラリが必要になります。 Windows ユーザは php_oci8.dll を使用するために 少なくともバージョン 10 以降のライブラリが必要になるでしょう。
要求される全てのファイルをインストールする最も簡便な方法は、 Oracle Instant Client を使用することです。これは http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html から取得可能です。 OCI8 モジュールを動作させるには、Oracle Instant Client の 「基本 (basic)」バージョンを導入するだけで十分です。 Instant Client は ORACLE_SID もしくは ORACLE_HOME 環境変数を設定する必要がありませんが、LD_LIBRARY_PATH と NLS_LANG を設定する必要があります。
この拡張モジュールを使用する前に Web デーモンのユーザでもある Oracle ユーザに対する Oracle 用環境変数が正しく設定されていることを 確認してください。これらの変数は Web サーバを起動する 前に 設定されていなければなりません。 設定されている必要がある変数を以下に示します。
ORACLE_HOME
ORACLE_SID
LD_PRELOAD
LD_LIBRARY_PATH
NLS_LANG
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 に指定する必要があります。
実行時設定
php.ini の設定により動作が変化します。
表 1. OCI8 設定オプション
| 名称 | デフォルト | 変更可否 | 変更履歴 |
|---|---|---|---|
| oci8.privileged_connect | "0" | PHP_INI_SYSTEM | PHP 5.1.2 以降で使用可能 |
| oci8.max_persistent | "-1" | PHP_INI_SYSTEM | PHP 5.1.2 以降で使用可能 |
| oci8.persistent_timeout | "-1" | PHP_INI_SYSTEM | PHP 5.1.2 以降で使用可能 |
| oci8.ping_interval | "60" | PHP_INI_SYSTEM | PHP 5.1.2 以降で使用可能 |
| oci8.statement_cache_size | "20" | PHP_INI_SYSTEM | PHP 5.1.2 以降で使用可能 |
| oci8.default_prefetch | "10" | PHP_INI_SYSTEM | PHP 5.1.2 以降で使用可能 |
| oci8.old_oci_close_semantics | "0" | PHP_INI_SYSTEM | PHP 5.1.2 以降で使用可能 |
以下に設定ディレクティブに関する 簡単な説明を示します。
- oci8.privileged_connect boolean
このオプションは外部の信用 (OCI_SYSOPER, OCI_SYSDBA) を利用して権限付きの接続を有効にします。
- oci8.max_persistent int
プロセスあたりの永続的な OCI8 接続の最大値を指定します。 このオプションを -1 に設定することは、制限なしを意味します。
- oci8.persistent_timeout int
与えられたプロセスがアイドル状態の永続的接続を維持する最大時間 (秒単位) を指定します。 このオプションを -1 に設定することは、 アイドル状態の永続的接続は永久に維持されることを意味します。
- oci8.ping_interval int
oci_pconnect() の間、ping を発行するまでに経過させる時間 (秒単位) を指定します。 0 に設定した場合、永続的接続は再利用される度に ping を発行します。 ping を完全に無効にするためには、このオプションを -1 に設定します。
注意: ping を無効にすることで oci_pconnect() は最高の効率で処理をコールしますが、ネットワークが分断された場合や PHP が接続した後に Oracle サーバがダウンし、 その後に実行されるスクリプト中において PHP が接続の失敗を検知しなくなります。 詳細な情報は oci_pconnect() を参照ください。
- oci8.statement_cache_size int
このオプションはステートメントキャッシュを有効にします。 また、キャッシュするステートメントの数を指定します。 ステートメントキャッシュを無効にする場合、このオプションを 0 に設定してください。
注意: より大きなキャッシュは、メモリ使用量の増加と引き替えに パフォーマンスの改善をもたらします。
- oci8.default_prefetch int
このオプションはステートメントのプリフェッチを有効にし、 ステートメントの実行後自動的にフェッチされるデフォルトの行数を 設定します。
注意: より大きなプリフェッチは、メモリ使用量の増加と引き替えに パフォーマンスの改善をもたらします。
- oci8.old_oci_close_semantics boolean
このオプションは oci_close() の動作を制御します。有効にすると、oci_close() は何も行いません。接続はスクリプトの終了まで閉じられません。 これは後方互換性のためのみに存在しています。 この設定を有効にする必要があると判明した場合、 このオプションを有効にする代わりに、 oci_close() をアプリケーションから削除することが 強く推奨されます。
定義済み定数
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
- OCI_DEFAULT (integer)
文の実行モードを指定します。 このモードを使用する場合、 文は自動的にコミットされません。
- OCI_DESCRIBE_ONLY (integer)
文の実行モードを指定します。 実際に文を実行したくないが取得一覧の記述は取得したい場合に このモードを使用してください。
- OCI_COMMIT_ON_SUCCESS (integer)
文の実行モードを指定します。 文は、oci_execute() コールの後に自動的にコミットされます。
- OCI_EXACT_FETCH (integer)
文の取得モードを指定します。 アプリケーションがあらかじめ何行取得すればよいか分かっている場合に 使用されます。 このモードは Oracle リリース 8 以降ではプリフェッチ機能をオフにします。 カーソルは希望する行を取得した後キャンセルされ、 サーバ側のリソースの使用は軽減されます。
- OCI_SYSDATE (integer)
- OCI_B_BFILE (integer)
oci_bind_by_name() で BFILE をバインドする場合に使用されます。
- OCI_B_CFILEE (integer)
oci_bind_by_name() で CFILE をバインドする場合に使用されます。
- OCI_B_CLOB (integer)
oci_bind_by_name() で CLOB をバインドする場合に使用されます。
- OCI_B_BLOB (integer)
oci_bind_by_name() で BLOB をバインドする場合に使用されます。
- OCI_B_ROWID (integer)
oci_bind_by_name() で ROWID をバインドする場合に使用されます。
- OCI_B_CURSOR (integer)
oci_bind_by_name() で oci_new_descriptor() によってあらかじめ割り当てられたカーソルをバインドする場合に使用されます。
- OCI_B_NTY (integer)
oci_bind_by_name() で 名前付けされたデータ型をバインドする場合に使用されます。 注意: PHP < 5.0 では OCI_B_SQLT_NTY と呼ばれます。
- OCI_B_BIN (integer)
- SQLT_BFILEE (integer)
OCI_B_BFILE と等価です。
- SQLT_CFILEE (integer)
OCI_B_CFILEE と等価です。
- SQLT_CLOB (integer)
OCI_B_CLOB と等価です。
- SQLT_BLOB (integer)
OCI_B_BLOB と等価です。
- SQLT_RDD (integer)
OCI_B_ROWID と等価です。
- SQLT_NTY (integer)
OCI_B_NTY と等価です。
- SQLT_LNG (integer)
oci_bind_by_name() で LONG 値をバインドする際に使用されます。
- SQLT_LBI (integer)
oci_bind_by_name() で LONG RAW 値をバインドする際に使用されます。
- SQLT_BIN (integer)
oci_bind_by_name() で RAW 値をバインドする際に使用されます。
- SQLT_NUM (integer)
oci_bind_array_by_name() で NUMBER の配列をバインドする場合に使用されます。
- SQLT_INT (integer)
oci_bind_array_by_name() で INTEGER の配列をバインドする場合に使用されます。
- SQLT_AFC (integer)
oci_bind_array_by_name() で CHAR の配列をバインドする場合に使用されます。
- SQLT_CHR (integer)
oci_bind_array_by_name() で VARCHAR2 の配列をバインドする場合に使用されます。 oci_bind_by_name() でも使用されます。
- SQLT_VCS (integer)
oci_bind_array_by_name() で VARCHAR の配列をバインドする際に使用されます。
- SQLT_AVC (integer)
oci_bind_array_by_name() で CHARZ の配列をバインドする場合に使用されます。
- SQLT_STR (integer)
oci_bind_array_by_name() で STRING の配列をバインドする場合に使用されます。
- SQLT_LVC (integer)
oci_bind_array_by_name() で LONG VARCHAR の配列をバインドする場合に使用されます。
- SQLT_FLT (integer)
oci_bind_array_by_name() で FLOAT の配列をバインドする場合に使用されます。
- SQLT_ODT (integer)
oci_bind_array_by_name() で LONG の配列をバインドする場合に使用されます。
- SQLT_BDOUBLE (integer)
- SQLT_BFLOAT (integer)
- OCI_FETCHSTATEMENT_BY_COLUMN (integer)
oci_fetch_all() のデフォルトのモードです。
- OCI_FETCHSTATEMENT_BY_ROW (integer)
oci_fetch_all() でのもうひとつのモードです。
- OCI_ASSOC (integer)
oci_fetch_all() と oci_fetch_array() で結果を連想配列で取得するために使用されます。
- OCI_NUM (integer)
oci_fetch_all() と oci_fetch_array() で結果を配列で取得するために使用されます。
- OCI_BOTH (integer)
oci_fetch_all() と oci_fetch_array() で結果を配列と連想配列の両方で取得するために使用されます。
- OCI_RETURN_NULLS (integer)
oci_fetch_array() でフィールド値が NULL の場合に空の配列要素を取得するために使用されます。
- OCI_RETURN_LOBS (integer)
oci_fetch_array() でディスクリプタの代わりに LOB の値を取得するために使用されます。
- OCI_DTYPE_FILE (integer)
このフラグは oci_new_descriptor() に新しい FILE ディスクリプタを初期化するように伝えます。
- OCI_DTYPE_LOB (integer)
このフラグは oci_new_descriptor() に新しい LOB ディスクリプタを初期化するように伝えます。
- OCI_DTYPE_ROWID (integer)
このフラグは oci_new_descriptor() に新しい ROWID ディスクリプタを初期化するように伝えます。
- OCI_D_FILE (integer)
OCI_DTYPE_FILE と等価です。
- OCI_D_LOB (integer)
OCI_DTYPE_LOB と等価です。
- OCI_D_ROWID (integer)
OCI_DTYPE_ROWID と等価です。
- OCI_SYSOPER (integer)
外部の信任を使用する SYSOPER として接続するために oci_connect() と併用します (これには oci8.privileged_connect を有効にすべきです) 。
- OCI_SYSDBA (integer)
外部の信任を使用する SYSDBA として接続するために oci_connect() と併用します (これには oci8.privileged_connect を有効にすべきです) 。
- OCI_LOB_BUFFER_FREE (integer)
使用されたバッファを解放するために OCI-Lob->flush と併用します。
- OCI_TEMP_CLOB (integer)
一時的な CLOB が生成されるよう明示的に指定するため OCI-Lob->writeTemporary と併用します。
- OCI_TEMP_BLOB (integer)
一時的な BLOB が生成されるよう明示的に指定するため OCI-Lob->writeTemporary と併用します。
例
例 2. バインド変数を用いた挿入
|
例 3. CLOB カラムにデータを挿入する
|
コマンドラインで実行するのと同様な手法により、ストアドプロシージャ に簡単にアクセス可能です。
例 4. ストアドプロシージャの使用法
|
接続のハンドリング
oci8 拡張モジュールは Oracle に接続するための 3 つの異なる関数を提供しています。 アプリケーションに最適な関数を使用するのはあなた次第です。 また、このセクションにある情報は、 インフォームド・チョイス (十分な説明を受けよく考えた上での選択) を行う助けになることを目的としています。
Oracle サーバへの接続は、完了まで要する時間という点から見ると、 かなりコストのかかる操作です。oci_pconnect() 関数は、 異なるスクリプトリクエスト間で接続の再利用が可能な 持続的キャッシュを使用します。 これは、PHP プロセス (もしくは Apache の子プロセス) 毎の接続に関するオーバーヘッドを一度のみ負うということを意味しています。
もしアプリケーションが信用された異なる Web ユーザー毎に Oracle に接続する場合、oci_pconnect() による持続的キャッシュは、 同時ユーザー数の増加と共に有効ではなくなるでしょう。 これは、多くのアイドル状態の接続が維持されることが原因で、 Oracle サーバ全体のパフォーマンスに不利な影響を与え始めるためです。 もしアプリケーションがこの方法で構成されている場合、 oci8.max_persistent や oci8.persistent_timeout (持続的接続のキャッシュサイズや生存期間の制御が可能になります) を使用してアプリケーションをチューニングする、もしくは代わりに oci_connect() を使用することが推奨されます。
oci_connect() と oci_pconnect() の両者とも接続キャッシュを使用します。もし、同一パラメータと共に oci_connect() を複数回コールする場合、 2 番目以降は既存の接続ハンドルを返します。oci_connect() によって使用されるキャッシュは、スクリプト実行終了時、 もしくは明示的に接続ハンドルを閉じた時にクリアされます。 oci_pconnect() も同様の動作をしますが、 キャッシュは独立して維持され、リクエスト間で残存します。
このキャッシュ機能は忘れてはならないほど重要です。 それは、2 つのハンドルがトランザクション的に独立していない (実際には同じ接続なので、どのような種類の独立もありません) ためです。もしアプリケーションが 2 つの別々でトランザクション的に独立した接続を必要とする場合、 oci_new_connect() を使用すべきです。
oci_new_connect() は、他の既存の接続が存在したとしても 常に Oracle サーバへの新規接続を生成します。 特にアプリケーションの最も負荷が高い部分など、 高トラフィックな Web アプリケーションに対しては oci_new_connect() の使用を避けてください。
ドライバでサポートされるデータ型
表 2. oci_bind_by_name() 関数を使用してパラメータをバインドする場合、 ドライバは次の型をサポートします
| 型 | マッピング |
|---|---|
| SQLT_NTY | oci_new_collection() によって生成されたような PHP のコレクションオブジェクトからネイティブのコレクション型に マップします |
| SQLT_BFILEE | oci_new_descriptor() によって生成されたような PHP のディスクリプタオブジェクトからネイティブのディスクリプタ型に マップします |
| SQLT_CFILEE | oci_new_descriptor() によって生成されたような PHP のディスクリプタオブジェクトからネイティブのディスクリプタ型に マップします |
| SQLT_CLOB | oci_new_descriptor() によって生成されたような PHP のディスクリプタオブジェクトからネイティブのディスクリプタ型に マップします |
| SQLT_BLOB | oci_new_descriptor() によって生成されたような PHP のディスクリプタオブジェクトからネイティブのディスクリプタ型に マップします |
| SQLT_RDD | oci_new_descriptor() によって生成されたような PHP のディスクリプタオブジェクトからネイティブのディスクリプタ型に マップします |
| SQLT_NUM | PHP パラメータを 'C' の long 型に変換し、 その値をバインドします |
| SQLT_RSET | oci_parse() によって生成されたもしくは他の OCI クエリから処理されたような PHP のステートメントハンドルからネイティブのステートメントハンドルに マップします |
| SQLT_CHR や他の型 | PHP パラメータを文字列型に変換し、その文字列をバインドします |
- 目次
- OCI-Collection->append -- コレクションに要素を追加する
- OCI-Collection->assign -- コレクションに他の存在するコレクションから値を割り当てる
- OCI-Collection->assignElem -- コレクションの要素に値を割り当てる
- OCI-Collection->free -- コレクションオブジェクトに関連付けられたリソースを解放する
- OCI-Collection->getElem -- 要素の値を返す
- OCI-Collection->max -- コレクション内の要素の最大数を取得する
- OCI-Collection->size -- コレクションのサイズを返す
- OCI-Collection->trim -- コレクションの最後から要素を切り取る
- OCI-Lob->append -- ラージオブジェクトを他のラージオブジェクトにデータを追加する
- OCI-Lob->close -- LOB ディスクリプタを閉じる
- OCI-Lob->eof -- ラージオブジェクトのディスクリプタが EOF かどうかを調べる
- OCI-Lob->erase -- 内部 LOB データの特定の位置を消去する
- OCI-Lob->export -- LOB の内容をファイルに出力する
- OCI-Lob->flush -- LOB のバッファをサーバにフラッシュする、あるいは書き込む
- OCI-Lob->free -- LOB ディスクリプタに関連付けられたりソースを解放する
- OCI-Lob->getBuffering -- ラージオブジェクトに対する現在のバッファリングの状態を返す
- OCI-Lob->import -- ファイルデータを LOB にインポートする
- OCI-Lob->load -- ラージオブジェクトの内容を返す
- OCI-Lob->read -- ラージオブジェクトの一部を読み込む
- OCI-Lob->rewind -- 内部ポインタをラージオブジェクトの先頭に移動する
- OCI-Lob->save -- データをラージオブジェクトに保存する
- OCI-Lob->saveFile -- oci_lob_import() のエイリアス
- OCI-Lob->seek -- ラージオブジェクトの内部ポインタをセットする
- OCI-Lob->setBuffering -- 現在のラージオブジェクト用のバッファリング状態を変更する
- OCI-Lob->size -- ラージオブジェクトのサイズを返す
- OCI-Lob->tell -- ラージオブジェクトの内部ポインタの現在位置を返す
- OCI-Lob->truncate -- ラージオブジェクトを切りつめる
- OCI-Lob->write -- データをラージオブジェクトに書き込む
- OCI-Lob->writeTemporary -- 一時的なラージオブジェクトを書き込む
- OCI-Lob->writeToFile -- oci_lob_export() のエイリアス
- oci_bind_array_by_name -- PHP の配列を Oracle PL/SQL の配列に名前でバインドする
- oci_bind_by_name -- Oracle プレースホルダーに PHP 変数をバインドする
- oci_cancel -- カーソルからの読み込みをキャンセルする
- oci_close -- Oracleとの接続を閉じる
- oci_commit -- 未解決の文をコミットする
- oci_connect -- Oracle サーバへの接続を確立する
- oci_define_by_name -- SELECT 実行中、定義用の PHP 変数を使用する
- oci_error -- 最後に見つかったエラーを返す
- oci_execute -- 文を実行する
- oci_fetch_all -- 結果データの全ての行を配列に取得する
- oci_fetch_array -- 結果データ空の次の行を連想配列または配列、またはその両方で返す
- oci_fetch_assoc -- 結果データの次の行を連想配列で返す
- oci_fetch_object -- 結果の次の行をオブジェクトとして返す
- oci_fetch_row -- 結果データの次の行を配列で返す
- oci_fetch -- 結果バッファーの次の行を取得する
- oci_field_is_null -- フィールドが NULL であるかどうかを確認する
- oci_field_name -- 文からのフィールド名を返す
- oci_field_precision -- フィールドの精度を問い合わせる
- oci_field_scale -- フィールドの桁数を問い合わせる
- oci_field_size -- フィールドサイズを返す
- oci_field_type_raw -- Oracle におけるフィールドの型を問い合わせる
- oci_field_type -- フィールドのデータ型を返す
- oci_free_statement -- 文やカーソルに関連付けられた全てのリソースを解放する
- oci_internal_debug -- 内部デバッグ用出力有効または無効にする
- oci_lob_copy -- ラージオブジェクトをコピーする
- oci_lob_is_equal -- 2 つの LOB/FILE ロケータの等価性を比較する
- oci_new_collection -- 新しいコレクションオブジェクトを割り当てる
- oci_new_connect -- Oracle サーバへの新規接続を確立する
- oci_new_cursor -- 新規カーソル (ステートメントハンドル) を割り当て返す
- oci_new_descriptor -- 空の新規 LOB あるいは FILE ディスクリプタを初期化する
- oci_num_fields -- ある文における結果のカラム数を返す
- oci_num_rows -- 文の実行で作用された行数を取得する
- oci_parse -- 実行のために Oracle の文をパースする
- oci_password_change -- Oracle ユーザーのパスワードを変更する
- oci_pconnect -- 持続的接続を使用してOracle データベースに接続する
- oci_result -- フェッチした行からフィールドの値を取得する
- oci_rollback -- 未解決のトランザクションをロールバックする
- oci_server_version -- サーバのバージョンを返す
- oci_set_prefetch -- プリフェッチする行数を設定する
- oci_statement_type -- OCI ステートメントの種類を返す
- ocibindbyname -- oci_bind_by_name() のエイリアス
- ocicancel -- oci_cancel() のエイリアス
- ocicloselob -- OCI-Lob->close のエイリアス
- ocicollappend -- OCI-Collection->append のエイリアス
- ocicollassign -- OCI-Collection->assign のエイリアス
- ocicollassignelem -- OCI-Collection->assignElem のエイリアス
- ocicollgetelem -- OCI-Collection->getElem のエイリアス
- ocicollmax -- OCI-Collection->max のエイリアス
- ocicollsize -- OCI-Collection->size のエイリアス
- ocicolltrim -- OCI-Collection->trim のエイリアス
- ocicolumnisnull -- oci_field_is_null() のエイリアス
- ocicolumnname -- oci_field_name() のエイリアス
- ocicolumnprecision -- oci_field_precision() のエイリアス
- ocicolumnscale -- oci_field_scale() のエイリアス
- ocicolumnsize -- oci_field_size() のエイリアス
- ocicolumntype -- oci_field_type() のエイリアス
- ocicolumntyperaw -- oci_field_type_raw() のエイリアス
- ocicommit -- oci_commit() のエイリアス
- ocidefinebyname -- oci_define_by_name() のエイリアス
- ocierror -- oci_error() のエイリアス
- ociexecute -- oci_execute() のエイリアス
- ocifetch -- oci_fetch() のエイリアス
- ocifetchinto -- 結果配列の次の行を取得する
- ocifetchstatement -- oci_fetch_all() のエイリアス
- ocifreecollection -- OCI-Collection->free のエイリアス
- ocifreecursor -- oci_free_statement() のエイリアス
- ocifreedesc -- OCI-Lob->free のエイリアス
- ocifreestatement -- oci_free_statement() のエイリアス
- ociinternaldebug -- oci_internal_debug() のエイリアス
- ociloadlob -- OCI-Lob->load のエイリアス
- ocilogoff -- oci_close() のエイリアス
- ocilogon -- oci_connect() のエイリアス
- ocinewcollection -- oci_new_collection() のエイリアス
- ocinewcursor -- oci_new_cursor() のエイリアス
- ocinewscriptor -- oci_new_descriptor() のエイリアス
- ocinlogon -- oci_new_connect() のエイリアス
- ocinumcols -- oci_num_fields() のエイリアス
- ociparse -- oci_parse() のエイリアス
- ociplogon -- oci_pconnect() のエイリアス
- ociresult -- oci_result() のエイリアス
- ocirollback -- oci_rollback() のエイリアス
- ocirowcount -- oci_num_rows() のエイリアス
- ocisavelob -- OCI-Lob->save のエイリアス
- ocisavelobfile -- OCI-Lob->import のエイリアス
- ociserverversion -- oci_server_version() のエイリアス
- ocisetprefetch -- oci_set_prefetch() のエイリアス
- ocistatementtype -- oci_statement_type() のエイリアス
- ociwritelobtofile -- OCI-Lob->export のエイリアス
- ociwritetemporarylob -- OCI-Lob->writeTemporary のエイリアス
Here are the translate of some functions from ORA to OCI:
<?php
function Ora_Logon($usuario, $password)
{
$con = oci_connect($usuario,$password);
return $con;
}
function Ora_Open($conexion) {
$cursor[0]=$conexion;
return $cursor;
}
function Ora_Parse(&$cursor, $consulta) {
$cursor[1]=oci_parse($cursor[0],$consulta);
return $cursor;
}
function Ora_Exec(&$cursor) {
oci_execute($cursor[1]);
$cursor[2]=1;
return $cursor;
}
function Ora_Fetch(&$cursor)
{
if ($cursor[2] == 1) $cursor[2]=0;
return oci_fetch($cursor[1]);
}
function Ora_GetColumn(&$cursor, $indice)
{
if ($cursor[2] == 1) {
Ora_Fetch($cursor);
$cursor[2]=0;
}
$valor = oci_result($cursor[1],$indice+1);
return $valor;
}
function Ora_Close(&$cursor)
{
unset($cursor[1]);
}
function Ora_Logoff($conexion) {
}
?>
