ホスト変数を指定したデータ・アクセス

アプリケーション・プログラム内のホスト変数、ホスト変数配列、およびホスト構造を使用して、アプリケーションと DBMS の間でデータを交換することができます。

ホスト変数 とはデータ項目の一種であり、SQL ステートメント内で使用するためにこのホスト変数をプログラムの中で宣言します。 以下を実行できます。

  • お客様のアプリケーション・プログラムで使用できるように、ホスト変数にデータを取り込みます。
  • ホスト変数にデータを入れて、表に挿入するか、または行の内容を変更します。
  • WHERE または HAVING 文節の評価時に、ホスト変数内のデータを使用します。
  • ホスト変数の中の値を特殊レジスターに割り当てます。 特別なレジスタとは、 Db2 がプロセスがSQLステートメントが参照できる情報を保持するために定義するストレージ領域です。

    例えば、CURRENT SQLID 特殊レジスタには、SQLステートメントで設定されたプロセスのSQL認証IDが格納されています。 Db2 SQLステートメントが実行される際に、レジスタ名を認証IDの値に置き換えます。

  • ホスト変数を使用して、NULL 値を示します。

ホスト変数のコーディング方法は、使用するプログラミング言語により変わります。 一部の言語では、SQL 変数に対して独立した宣言セクションが必要となります。 この場合、ホスト言語の規則に従って変数宣言を入れることができる場所ではどこにでも、BEGIN と END DECLARE SECTION ステートメントをアプリケーション・プログラムの中にコーディングすることができます。 ホスト変数の宣言セクションは、BEGIN DECLARE SECTION ステートメントで始まり、END DECLARE SECTION ステートメントで終わります。 ホスト変数の前には、:hostvar を付ける必要があります。

SELECT ステートメントの INTO 文節には 1 つ以上のホスト変数に名前を指定して、戻される列値がそこに入れられます。 ホスト変数およびホスト変数配列の場合、名前付き変数は、SELECT リスト内の列名のリストと 1 対 1 で対応します。

以下の例では、ホスト変数を使用して単一行のデータをリトリーブします。

汎用プログラミングインターフェース情報の開始。EMP 表内の単一行から EMPNO、LASTNAME、および DEPT の列値をリトリーブしたいと仮定します。 ご使用のプログラム内にホスト変数を定義して、各列を保持できます。 このホスト変数はローカル変数で構成され、コロンが前に付きます。 以下に示すとおり、INTO 文節を使ってデータ域の名前を指定することができます。
EXEC SQL
  SELECT EMPNO, LASTNAME, DEPT
    INTO :CBLEMPNO, :CBLNAME, :CBLDEPT
    FROM EMP
    WHERE EMPNO = :EMPID
END-EXEC.
汎用プログラミングインターフェース情報の終了。

このプログラムのデータ宣言部分には、ホスト変数 CBLEMPNO、CBLNAME、および CBLDEPT を宣言しておく必要があります。 このホスト変数のデータ・タイプは、EMP 表の EMPNO、LASTNAME、および DEPT の各列の SQL データ・タイプと互換性がある必要があります。

Db2 が何行を返すか分からない場合、または1行以上が返されると予想される場合を想定してください。 いずれの場合も、SELECT ... の代わりに使用する必要があります。 INTO ステートメント。 Db2 カーソルを使用することで、アプリケーションは行のセットを処理し、結果テーブルから行を取得することができます。