複数のデータベース表にアクセスする

同じデータベース内に作成した複数の表を参照することができます。SELECT ステートメントの FROM 文節を使用して 2 つの表のデータを結合します。

以下の例では、USERTABLE1 と USERTABLE2 の 2 つのデータベース表がある場合を想定します。この 2 つの表には、それぞれ 2 つの char(6) データ・タイプの列 (またはそれに相当するもの) が設けられています。

USERTABLE1 には 2 つの行があります。

  Column1 Column2
行 1 value1 value2
行 2 value3 value4

USERTABLE2 には 2 つの行があります。

  Column3 Column4
行 1 value5 value6
行 2 value7 value8

1 つの SELECT 関数によって参照されるすべての表は、同じデータベース内になければなりません。このデータベースは、(ノードの "data source" プロパティーで指定された) デフォルト・データベース、または (SELECT 関数の FROM 文節で指定された) 別のデータベースのどちらかとすることができます。

表が定義されたデータベースを識別するには、使用中の Compute、Filter、または Database ノードを構成します。例えば、デフォルト・データベースを使用する場合には、ノードを右クリックし、「ESQL のオープン」を選択して、このノードのモジュール内に以下の ESQL ステートメントをコーディングします。

SET OutputRoot.XML.Test.Result[] =
         (SELECT A.Column1 AS FirstColumn,
                 A.Column2 AS SecondColumn,
                 B.Column3 AS ThirdColumn,
                 B.Column4 AS FourthColumn
            FROM Database.USERTABLE1 AS A,
                 Database.USERTABLE2 AS B
           WHERE A.Column1 = 'value1' AND
                 B.Column4 = 'value8'
         ); 

これは、次の内容の出力メッセージを生成します。

<Test>
  <Result>
    <FirstColumn>value1</FirstColumn>
    <SecondColumn>value2</SecondColumn>
    <ThirdColumn>value7</ThirdColumn>
    <FourthColumn>value8</FourthColumn>
  </Result>
</Test>

上記の例は、2 つのデータベース表からデータにアクセスする方法を示しています。複数のデータベース表にアクセスするためにより複雑な FROM 文節をコーディングすることができます (すべての表は同じデータベースに含まれなければなりません)。1 つ以上のメッセージ・ツリーを参照することもできるため、SELECT を使用して表と表、メッセージとメッセージ、または表とメッセージを結合することができます。XML メッセージとデータベース表のデータの結合には、メッセージ・データをデータベース表内のデータにマージする方法の例が示されています。

(ノードの data source プロパティーで定義される)

WHERE 文節の列 ID で ESQL 関数またはプロシージャーを指定した場合、これは ESQL としてではなく、データベース照会の一部として処理されます。

次の例をご覧ください。

  SET OutputRoot.XML.Test.Result =
     THE(SELECT ITEM T.Column1 FROM Database.USERTABLE1 AS T 
     WHERE UPPER(T.Column2) = 'VALUE2');

これは、大文字に変換された Column2 の値が VALUE2 の行を戻すことを試行します。しかし、特定の行の T.Column2 の値を判別できるのは、データベース・マネージャーのみです。したがって、データベース照会が実行される前は、ESQL では処理できません。これは WHERE 文節がメッセージ・フローに戻す行を決定するためです。

このような理由で、UPPER はデータベース・マネージャーに渡され、その処理の一部として組み込まれます。ただし、データベース・マネージャーが SELECT ステートメント内のトークンを処理できない場合は、エラーが戻されます。

関連概念
メッセージ・フローの概要
ESQL の概要
メッセージのモデル化
関連タスク
メッセージ・フローの設計
メッセージ・フローの内容の定義
ESQL ファイルの管理
XML メッセージとデータベース表のデータの結合
関連資料
Compute ノード
Database ノード
Filter ノード
ESQL 参照
SELECT 関数
SET ステートメント
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ak05830_