XML メッセージでスカラー値を戻す

SELECT ステートメントを使用して、THE と ITEM キーワードの両方を組み込むことによって、 スカラー値を戻します。たとえば、

1 + THE(SELECT ITEM T.a FROM Body.Test.A[] AS T WHERE T.b = '123')

ITEM キーワードの使用

以下の例は、ITEM キーワードの使用を示しています。 このキーワードは、1 つの項目を選択して、単一の値を作成します。

SET OutputRoot.MQMD = InputRoot.MQMD;

SET OutputRoot.XML.Test.Result[] =
      (SELECT ITEM T.UnitPrice FROM InputBody.Invoice.Purchases.Item[] AS T);

Invoice メッセージを入力として受け取る場合、ESQL は次の出力メッセージを生成します。

<Test>
  <Result>27.95</Result>
  <Result>42.95</Result>
  <Result>59.99</Result>
</Test>

ITEM キーワードが指定された場合、出力メッセージにはスカラー値のリストが含まれます。 このメッセージを、ITEM キーワードを省略した場合に生成されるメッセージと比較してみましょう。 フィールドのリスト(名前と値のペア)が生成されます。

<Test>
    <Result>
          <UnitPrice>27.95</UnitPrice>
    </Result>
    <Result>
          <UnitPrice>42.95</UnitPrice>
    </Result>
    <Result>
          <UnitPrice>59.99</UnitPrice>
    </Result>
</Test>

THE キーワードの効果

THE キーワードは、1 つの項目を含むリストを、項目自体に変換します。

前の 2 つの例は両方とも、リストを FROM 文節の SELECT のソースとして指定したため (配列を示すためにフィールド参照の最後に [] がある)、通常、SELECT は結果のリストを生成します。 このため、リストを代入先として指定する必要があります (つまり、代入先として "Result[]" を指定します)。 しかし、大抵の場合、SELECT の一部として指定する WHERE 文節は、リスト内の 1 つの項目に対してのみ TRUE を戻すことが分かります。 この場合、THE キーワードを使用します。

以下の例は、THE キーワードを使用した効果を示しています。

SET OutputRoot.MQMD = InputRoot.MQMD;

SET OutputRoot.XML.Test.Result =
        THE (SELECT T.Publisher, T.Author FROM InputBody.Invoice.Purchases.Item[] 
         AS T WHERE T.UnitPrice = 42.95);

THE キーワードは、代入先が OutputRoot.XML.Test.Result になることを意味します。 ("[]" は許可されません。) THE キーワードを使用すると次の出力メッセージが生成されます。

<Test>
    <Result>
          <Publisher>Morgan Kaufmann Publishers</Publisher>
          <Author>Don Chamberlin</Author>
    </Result>
</Test>

スカラーのリストからの選択

次のサンプル入力メッセージをご覧ください。

<Test>
 <A>1</A>
 <A>2</A>
 <A>3</A>
 <A>4</A>
 <A>5</A>
</Test>

次の ESQL ステートメントをコード化してこのメッセージを処理すると、

SET OutputRoot.XML.Test.A[] = 
    (SELECT ITEM A from InputBody.Test.A[]  
      WHERE CAST(A AS INTEGER) BETWEEN 2 AND 4);

次の出力メッセージが生成されます。

      <A>2</A>
      <A>3</A>
      <A>4</A>

関連概念
メッセージ・フロー
ESQL
メッセージのモデル化

関連タスク
メッセージ・フローの設計
メッセージ・フローの内容の定義
ESQL ファイルの管理

関連資料
Compute ノード
Database ノード
Filter ノード
ESQL
SELECT 関数
SET ステートメント
サンプル・メッセージ