同じデータベース内に作成した複数のテーブルを参照することができます。 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 |
Compute ノードを構成して、2 つのテーブルを定義したデータベースを識別します。 ノードを右クリックし、「ESQL のオープン(Open 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 文節をコーディングすることができます。 すべてのテーブルは (ノードの「データ・ソース (Data Source)」プロパティーによって定義された) 1 つのデータベースからのものでなければなりません。 1 つ以上のメッセージ・ツリーを参照することもできるため、SELECT を使用してテーブルとテーブル、メッセージとメッセージ、またはテーブルとメッセージを結合することができます。XML メッセージとデータベース・テーブルのデータの結合には、メッセージ・データをデータベース・テーブル内のデータにマージする方法の例が示されています。
ESQL 関数を指定するか、WHERE 文節の列 ID でプロシージャー名が指定される場合、 これは 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 ステートメント
注意 |
商標 |
ダウンロード |
ライブラリー |
技術サポート |
フィードバック
![]() ![]() |
ak05830_ |