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 Last updated: 5 01, 2006
ak05770_