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>
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ak05770_