PHP マニュアル
前のページ |  | 次のページ

# 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 );

    ?>

前のページ | ホーム | 次のページ
deaggregate | 上に戻る | OCIBindByName