Manipolazione dei campi che si ripetono in una struttura ad albero del messaggio

Questa sezione descrive l'utilizzo della funzione SELECT e ci altre funzioni della colonna per manipolare i campi ripetuti in una struttura ad albero del messaggio.

Si supponga di voler eseguire un'azione speciale sulle fatture con un valore di ordine totale superiore ad una certa cifra. Per calcolare il valore dell'ordine totale di un campo Invoice, è necessario moltiplicare i campi Price per i campi Quantity in tutti gli Items nel messaggio e calcolare il risultato. E' possibile effettuare questa operazione utilizzando un'espressione SELECT, come riportato di seguito:

(
 SELECT SUM( CAST(I.Price AS DECIMAL) * CAST(I.Quantity AS INTEGER) )
  FROM Body.Invoice.Purchases."Item"[] AS I
) 

Nell'esempio si suppone che sia necessario utilizzare espressioni CAST per eseguire il cast dei valori stringa dei campi Price e Quantity nei tipi di dati corretti. Il cast del campo Price in un decimale produce un valore decimale con scala e precisione naturali, ossia qualsiasi scala e precisione necessarie per rappresentare il numero. Tali CAST non sarebbero necessarie se i dati fossero già del tipo di dati appropriato.

L'espressione SELECT funzione in modo simile al predicato quantificato ed in modo molto simile al modo in cui una SELECT funzione in un SQL del database standard. La clausola FROM specifica l'elemento che viene iterato, in questo caso tutti i campi Item in Invoice, e stabilisce che è possibile fare riferimento all'istanza corrente di Item mediante I. Tale formato di SELECT comporta una funzione di colonna, in questo caso la funzione SUM, per cui la SELECT viene valutata aggiungendo i risultati della valutazione dell'espressione all'interno della funzione SUM per ciascun campo Item in Invoice. Come per il linguaggio SQL standard, i valori NULL vengono ignorati per le funzioni di colonna, con l'eccezione della funzione della colonna COUNT illustrata di seguito e viene restituito un valore NULL dalla funzione della colonna solo se non esistono valori non NULL da combinare.

Le altre funzioni della colonna fornite sono MAX, MIN e COUNT. La funzione COUNT dispone di due formati che si comportano diversamente per quanto riguarda i valori NULL. Nel primo formato si utilizza in modo simile alla funzione SUM sopra indicata, ad esempio:

SELECT COUNT(I.Quantity)
  FROM Body.Invoice.Purchases."Item"[] AS I

Questa espressione restituisce il numero di campi Item per cui il campo Quantity non è NULL. Ossia, la funzione COUNT conta i valori non NULL, allo stesso modo in cui la funzione SUM aggiunge i valori non NULL. Di seguito è riportato un modo alternativo di utilizzare la funzione COUNT:

SELECT COUNT(*)
  FROM Body.Invoice.Purchases."Item"[] AS I

Utilizzando COUNT(*) viene conteggiato il numero di campi Item, indipendentemente dal fatto che alcuni di tali campi siano NULL. L'esempio sopra riportato è equivalente all'utilizzo della funzione CARDINALITY, come in quello riportato di seguito:

CARDINALITY(Body.Invoice.Purchases."Item"[]

In tutti gli esempi di SELECT forniti, come nel linguaggio SQL standard, è possibile utilizzare una clausola WHERE per filtrare i campi.

Concetti correlati
Panoramica dei flussi di messaggi
Panoramica di ESQL
Creazione di modelli di messaggio
Attività correlate
Progettazione di un flusso di messaggi
Definizione del contenuto del flusso di messaggi
Gestione dei file ESQL
Riferimenti correlati
Nodo Compute
Nodo Database
Nodo Filter
Riferimento ESQL
Funzione CARDINALITY
Funzione SELECT
Messaggio di esempio
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak20705_