LX. IBM DB2、Cloudscape および Apache Derby 関数

導入

これらの関数により、DB2 Call Level Interface (DB2 CLI) を使用した IBM DB2 Universal Database、IBM Cloudscape および Apache Derby データベースへのアクセスが可能となります。

要件

IBM DB2 Universal Database for Linux・UNIX・Windows、 IBM Cloudscape、Apache Derby に接続するには、 PHP を稼動させるコンピュータ上に IBM DB2 Universal Database client がインストールされていなければなりません。 この拡張モジュールは、DB2 バージョン 8.2 を対象にして開発およびテストが行われています。

IBM DB2 Universal Database for z/OS・iSeries に接続するには、IBM DB2 Connect あるいはそれと同等の DRDA ゲートウェイソフトウェアも必要となります。

Linux あるいは Unix についての要件

これらの関数を使用する前には、PHP 実行ファイルあるいは SAPI を実行するユーザで DB2 インスタンスを指定する必要があります。 php.iniibm_db2.instance_name を使用して DB2 インスタンス名を指定するか、 PHP 実行ファイルの起動前に DB2 インスタンスプロファイルを 読み込むことができます。

例えば、db2inst1 という名前の DB2 インスタンスを /home/db2inst1/ に作成した場合には php.ini に以下の行を追加します。

ibm_db2.instance_name=db2inst1
php.ini にこれを指定しない場合は、 DB2 へのアクセス用の環境変数を設定するために 以下のコマンドを実行しなければなりません。
bash$ source /home/db2inst1/sqllib/db2profile
PHP が使用できる Web サーバからこれらの関数を使用するには、 php.iniibm_db2.instance_name を設定するか、 Web サーバの起動スクリプト (/etc/init.d/httpd あるいは /etc/init.d/apache であることが多いでしょう) で DB2 インスタンス環境変数を読み込む必要があります。

インストール手順

ibm_db2 拡張モジュールをビルドするには、 DB2 アプリケーション開発用のヘッダファイルおよびライブラリが システムにインストールされていなければなりません。 これらのファイルはデフォルトではインストールされないので、 DB2 のインストーラをもう一度起動して このオプションを追加する必要があります。 IBM DB2 Universal Database の サポートサイト にてフリーで公開されている DB2 Application Development Client に、これらのヘッダファイルが含まれています。

既に DB2 がインストールされている Linux や Unix 上に DB2 アプリケーション開発用のヘッダおよびライブラリを追加した場合は、 DB2 インスタンス内のヘッダファイルやライブラリに対する シンボリックリンクを更新するため、 コマンド db2iupdt -e を実行しなければなりません。

ibm_db2 は PECL 拡張モジュールなので、 第7章 の手順にしたがって PHP にインストールすることができます。 まず、DB2 ヘッダファイルおよびライブラリの場所を指定するために 次のように configure コマンドを実行します。

bash$ ./configure --with-IBM_DB2=/path/to/DB2
configure コマンドのデフォルト値は /opt/IBM/db2/V8.1 となっています。

IIS ユーザ向けの注意: ibm_db2 ドライバを Microsoft Internet Information Server (IIS) で使用する場合は、以下ようにする必要があります。

DB2 を、拡張オペレーティングセキュリティ (extended operating system security) つきでインストールします。
PHP のバイナリへのパス (デフォルトは C:\php\) を、システムの環境変数 PATH に追加します。
システムの環境変数をもうひとつ作成し、PHP.INI のある場所を指定します (例: PHPRC = C:\php\)。
IUSR_COMPUTERNAME を DB2USERS グループに追加します。

実行時設定

php.ini の設定により動作が変化します。

表 1. ibm_db2 設定オプション

名前デフォルト変更可能変更履歴
ibm_db2.binmode"1"PHP_INI_ALL 
ibm_db2.i5_allow_commit"0"PHP_INI_SYSTEM 
ibm_db2.i5_dbcs_alloc"0"PHP_INI_SYSTEM 
ibm_db2.instance_nameNULLPHP_INI_SYSTEM 

以下に設定ディレクティブに関する 簡単な説明を示します。

ibm_db2.binmode integer

このオプションは、バイナリデータを PHP アプリケーションで 使用する際のモードを制御します。

  • 1 (DB2_BINARY)

  • 2 (DB2_CONVERT)

  • 3 (DB2_PASSTHRU)

ibm_db2.i5_allow_commit integer

このオプションは、i5 スキーマコレクションで使用するコミットモードを PHP アプリケーションで使用する際のモードを制御します。

  • 0 はコミットしません (オーバーライドについては i5_commit を参照ください)。

  • 1 はコミットを許可します (オーバーライドについては i5_commit を参照ください)。

ibm_db2.i5_dbcs_alloc integer

このオプションは、ラージ DBCS カラムバッファ用の内部 ibm_db2 アロケーションスキームを制御します。

  • 0 は拡張アロケーションを使用しません (オーバーライドについては i5_dbcs_alloc を参照ください)。

  • 1 は拡張アロケーションを使用します (オーバーライドについては i5_dbcs_alloc を参照ください)。

ibm_db2.instance_name string

Linux および UNIX では、カタログデータベースへの接続に使用する インスタンス名をこのオプションで指定します。 このオプションは、環境変数 DB2INSTANCE の設定を上書きします。

Windows では、このオプションは無視されます。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

DB2_BINARY (integer)

バイナリデータをそのままの形式で返します。デフォルトのモードです。

DB2_CONVERT (integer)

バイナリデータを十六進表現にエンコードし、ASCII 文字列として返します。

DB2_PASSTHRU (integer)

バイナリデータを NULL 値に変換します。

DB2_SCROLLABLE (integer)

ステートメントのリソースとして、スクロール可能なカーソルを指定します。 このモードでは結果セット内の行へのランダムアクセスが可能となりますが、 現在は IBM DB2 Universal Database でしかサポートされていません。

DB2_FORWARD_ONLY (integer)

ステートメントのリソースとして、前進のみ可能なカーソルを指定します。 これはデフォルトのカーソル型であり、 すべてのデータベースサーバでサポートされています。

DB2_PARAM_IN (integer)

PHP 変数を、ストアドプロシージャの IN パラメータとしてバインドします。

DB2_PARAM_OUT (integer)

PHP 変数を、ストアドプロシージャの OUT パラメータとしてバインドします。

DB2_PARAM_INOUT (integer)

PHP 変数を、ストアドプロシージャの INOUT パラメータとしてバインドします。

DB2_PARAM_FILE (integer)

カラムを直接ファイルにバインドし、そのデータを読み込みます。

DB2_AUTOCOMMIT_ON (integer)

自動コミットを有効にします。

DB2_AUTOCOMMIT_OFF (integer)

自動コミットを無効にします。

DB2_DOUBLE (integer)

変数を、データ型 DOUBLE、FLOAT あるいは REAL にバインドします。

DB2_LONG (integer)

変数を、データ型 SMALLINT、INTEGER あるいは BIGINT にバインドします。

DB2_CHAR (integer)

変数を、データ型 CHAR あるいは VARCHAR にバインドします。

DB2_CASE_NATURAL (integer)

カラム名の大文字小文字を変換せずに返します。

DB2_CASE_LOWER (integer)

カラム名を小文字に変換して返します。

DB2_CASE_UPPER (integer)

カラム名を大文字に変換して返します。

DB2_DEFERRED_PREPARE_ON (integer)

指定したステートメントリソースについて、遅延プリペアを有効にします。

DB2_DEFERRED_PREPARE_OFF (integer)

指定したステートメントリソースについて、遅延プリペアを無効にします。

リソース型

ibm_db2 拡張モジュールは、接続リソース・ステートメントリソース および結果セットリソースを返します。

目次
db2_autocommit --  データベース接続の AUTOCOMMIT の状態を取得または設定する
db2_bind_param --  PHP 変数を SQL 文のパラメータにバインドする
db2_client_info --  DB2 データベースクライアントの情報をプロパティに保持するオブジェクトを返す
db2_close --  データベース接続を閉じる
db2_column_privileges --  テーブルのカラムおよび関連する権限情報を含む結果セットを返す
db2_columns --  テーブルのカラムおよび関連するメタデータを含む結果セットを返す
db2_commit --  トランザクションをコミットする
db2_conn_error --  直近の接続から返された SQLSTATE を含む文字列を返す
db2_conn_errormsg --  直近の接続エラーメッセージおよび SQLCODE を返す
db2_connect --  データベースへの接続を返す
db2_cursor_type --  ステートメントリソースが使用しているカーソルの型を返す
db2_escape_string --  特定の文字をエスケープする
db2_exec --  SQL 文を直接実行する
db2_execute --  プリペアドステートメントを実行する
db2_fetch_array --  結果セット内の行を表す、カラム位置をインデックスとする配列を返す
db2_fetch_assoc --  結果セット内の行を表す、カラム名をインデックスとする配列を返す
db2_fetch_both --  結果セット内の行を表す、 カラム位置およびカラム名の両方をインデックスとする配列を返す
db2_fetch_object --  結果セット内の行を表す、カラムをプロパティとするオブジェクトを返す
db2_fetch_row --  結果セットポインタを次の行あるいは要求された行に設定する
db2_field_display_size --  カラムを表示するために必要な最大のバイト数を返す
db2_field_name --  結果セット内のカラムの名前を返す
db2_field_num --  結果セット内の指定したカラムの位置を返す
db2_field_precision --  結果セット内の指定したカラムの精度を返す
db2_field_scale --  結果セット内の指定したカラムの位取りを返す
db2_field_type --  結果セット内の指定したカラムのデータ型を返す
db2_field_width --  結果セット内の指定したカラムの現在値の幅を返す
db2_foreign_keys --  テーブルの外部キーを含む結果セットを返す
db2_free_result --  結果セットに関連付けられたリソースを開放する
db2_free_stmt --  指定されたステートメントリソースに関連付けられたリソースを開放する
db2_get_option -- ステートメントリソースあるいは接続リソースからオプションの値を取得する
db2_lob_read --  LOB ファイルから、ユーザが定義したサイズの内容を取得する
db2_next_result --  ストアドプロシージャから、次の結果セットを要求する
db2_num_fields --  結果セットに含まれるフィールドの数を返す
db2_num_rows --  SQL 文によって変更された行の数を返す
db2_pconnect --  データベースへの持続的接続を返す
db2_prepare --  実行する SQL 文を準備する
db2_primary_keys --  テーブルの主キーを含む結果セットを返す
db2_procedure_columns --  ストアドプロシージャのパラメータを含む結果セットを返す
db2_procedures --  データベース内に登録されているストアドプロシージャの一覧を含む結果セットを返す
db2_result --  結果セットの行からひとつのカラムを返す
db2_rollback --  トランザクションをロールバックする
db2_server_info --  DB2 データベースサーバの情報をプロパティに保持するオブジェクトを返す
db2_set_option -- 接続リソースあるいはステートメントリソースのオプションを設定する
db2_special_columns --  テーブルのユニーク行 ID カラムを含む結果セットを返す
db2_statistics --  インデックスの情報およびテーブルの統計情報を含む結果セットを返す
db2_stmt_error --  SQL 文が返す SQLSTATE を含む文字列を返す
db2_stmt_errormsg --  直近の SQL 文のエラーメッセージを含む文字列を返す
db2_table_privileges --  データベース内のテーブルおよび関連する権限情報を含む結果セットを返す
db2_tables --  データベース内のテーブルおよび関連するメタデータを含む結果セットを返す