Restituzione di un valore scalare in un messaggio XML

Utilizzare un'istruzione SELECT per restituire un valore scalare includendo le parole chiave THE ed ITEM, ad esempio:

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

Utilizzo della parola chiave ITEM

L'esempio riportato di seguito illustra l'utilizzo della parola chiave ITEM per selezionare un elemento e creare un valore singolo.

SET OutputRoot.MQMD = InputRoot.MQMD;

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

Quando il messaggio Invoice viene ricevuto come input, il codice ESQL illustrato genera il seguente messaggio di output:

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

Quando viene specificata la parola chiave ITEM, il messaggio di output contiene un elenco di valori scalari. Confrontare questo messaggio con quello prodotto se la parola chiave ITEM non viene utilizzata, in cui viene generato un elenco di campi (coppie nome-valore):

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

Effetti della parola chiave THE

La parola chiave THE converte un elenco che contiene un elemento nell'elemento stesso.

Nei due esempi precedenti è specificato un elenco come origine della SELECT nella clausola FROM (al termine del riferimento di campo è specificato [] per indicare un array), per cui generalmente la SELECT genera un elenco di risultati. Per questo motivo, è necessario specificare un elenco come destinazione dell'assegnazione (quindi "Result[]" come destinazione dell'assegnazione). Tuttavia, la clausola WHERE specificata come parte di SELECT restituisce TRUE per un elemento nell'elenco. In questo caso, utilizzare la parola chiave THE.

L'esempio riportato di seguito illustra l'effetto dell'utilizzo della parola chiave 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);

La parola chiave THE indica che la destinazione dell'assegnazione diventa OutputRoot.XML.Test.Result (non è consentito utilizzare "[]"). Il suo utilizzo genera il seguente messaggio di output:

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

Selezione da un elenco di scalari

Considerare il seguente messaggio di input di esempio:

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

Se si utilizzano le seguenti istruzioni ESQL per elaborare questo messaggio:

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

viene generato il seguente messaggio di output:

      <A>2</A>
      <A>3</A>
      <A>4</A>
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak05770_