Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7">

LXXIOracle 8 関数

以下の関数により Oracle8 および Oracle7 データベースへのアクセスが 可能となります。この関数は、Oracle8 Call-Interface (OCI8) を使用し ます。この拡張機能を使用するには、Oracle8 クライアントライブラリが 必要です。

この拡張モジュールは、通常のOracle拡張機能より柔軟性があります。 この拡張モジュールは、グローバルおよびローカルの PHP 変数の Ocacle プレースホルダーへのバインドをサポートします。また、LOB,FILE,ROWID を完全にサポートしており、ユーザー定義の変数が使用可能です。

この拡張モジュールを使用する前に 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を再インストールする必要が あります。

# cd /usr/src/apache_1.3.xx
# make clean
# LIBS=-lpthread ./config.status
# make
# make install

例 1OCIに関するヒント

<?php
// by sergo@bacup.ru

// コマンドの実行を遅延させるには、オプション OCI_DEFAULT を使用して
// 下さい
OCIExecute($stmt, OCI_DEFAULT);

// (クエリ結果取得後に)使用するデータを取得

$result = OCIResult($stmt, $n);
if (is_object ($result)) $result = $result->load();

// INSERT または UPDATE 命令の場合に使用

$sql = "insert into table (field1, field2) values (field1 = 'value',
 field2 = empty_clob()) returning field2 into :field2";
OCIParse($conn, $sql);
$clob = OCINewDescriptor($conn, OCI_D_LOB);
OCIBindByName ($stmt, ":field2", &$clob, -1, OCI_B_CLOB);
OCIExecute($stmt, OCI_DEFAULT);
$clob->save ("some text");
OCICommit($conn);

?>

コマンドラインで実行するのと同様な手法により、ストアドプロシージャ に簡単にアクセス可能です。

例 2ストアドプロシージャの使用法

<?php
// by webmaster@remoterealty.com
$sth = OCIParse ( $dbh, "begin sp_newaddress( :address_id, '$firstname',
 '$lastname', '$company', '$address1', '$address2', '$city', '$state',
 '$postalcode', '$country', :error_code );end;" );

// この命令は、:address_id を入出力変数、:error_code を出力変数として
// ストアドプロシージャ sp_newaddress をコールします。
// 続いて、以下のようにバインドを実行します。

   OCIBindByName ( $sth, ":address_id", $addr_id, 10 );
   OCIBindByName ( $sth, ":error_code", $errorcode, 10 );
   OCIExecute ( $sth );

?>

目次
OCIBindByName -- Oracle プレースホルダーに PHP 変数をバインドする
OCICancel -- カーソルからの読み込みをキャンセルする
OCICollAppend -- Coming soon.
OCICollAssign -- Coming soon.
OCICollAssignElem -- Coming soon.
OCICollGetElem -- Coming soon.
OCICollMax -- Coming soon.
OCICollSize -- Coming soon.
OCICollTrim -- Coming soon.
OCIColumnIsNULL -- 結果カラムが NULL であるかどうかを確認する
OCIColumnName -- カラムの名前を返す
OCIColumnPrecision -- Coming soon.
OCIColumnScale -- Coming soon.
OCIColumnSize -- 結果カラムサイズを返す
OCIColumnType -- カラムのデータ型を返す
OCIColumnTypeRaw -- Coming soon.
OCICommit -- 未解決のトランザクションをコミットする
OCIDefineByName -- SELECT 実行中、定義用の PHP 変数を使用する
OCIError --  stmt|conn|globalに関する直近のエラーを返す。 エラーが生じていない場合はFALSEを返す。
OCIExecute -- 文を実行する
OCIFetch -- 結果バッファーの次の行を取得する
OCIFetchInto -- 結果配列の次の行を取得する
OCIFetchStatement -- 結果データの全ての行を配列に取得する
OCIFreeCollection -- Coming soon.
OCIFreeCursor -- カーソルに関連づけられた全リソースを開放する
OCIFreeDesc -- ラージオブジェクト記述子を削除する
OCIFreeStatement -- ある文に関連する全リソースを開放する
OCIInternalDebug --  内部デバッグ用出力有効または無効にする。デフォルトでは無効
OCILoadLob -- Coming soon.
OCILogOff -- Oracleとの接続を切る
OCILogon -- Oracle への接続を確立する
OCINewCollection -- Coming soon.
OCINewCursor --  新規カーソル(命令ハンドル)を返す - 参照カーソルをバインドするために使用する
OCINewDescriptor --  空の新規ディスクリプタLOB/FILE(LOBがデフォルト)を初期化する
OCINLogon -- Oracle データベースに接続し、新規接続にログオン、 新規セッションを返す
OCINumCols -- ある文における結果のカラム数を返す
OCIParse -- クエリーをパースし、ステートメントを返す
OCIPLogon --  持続的接続を使用してOracle データベースに接続、ログオンする。 新しいセッションを返す。
OCIResult -- 取得された行におけるカラムの値を得る
OCIRollback -- 未解決のトランザクションをロールバックする
OCIRowCount -- 作用された行の数を得る
OCISaveLob -- Coming soon.
OCISaveLobFile -- Coming soon.
OCIServerVersion -- サーバーのバージョン情報を有する文字列を返す
OCISetPrefetch -- 事前取得するレコード数を設定
OCIStatementType -- OCI 命令の型を返す
OCIWriteLobToFile -- Coming soon.