Istruzione RETURN

L'istruzione RETURN termina l'elaborazione. Le operazioni che vengono eseguite successivamente dipendono dal contesto di programmazione in cui viene eseguita l'istruzione RETURN.

SINTASSI

Quando viene utilizzata in una funzione, l'istruzione RETURN termina l'elaborazione di tale funzione e restituisce il controllo all'espressione chiamante. L'espressione expression (che deve essere presente) viene valutata e funziona come valore di ritorno della funzione. E' un errore per una funzione restituire il controllo uscendo dall'elenco delle istruzioni. Il tipo di dati del valore restituito deve essere uguale a quello nella dichiarazione della funzione.

Quando viene utilizzata in una procedura, l'istruzione RETURN termina l'elaborazione di tale procedura e restituisce il controllo all'istruzione CALL chiamante. Un'istruzione RETURN utilizzata all'interno di una procedura non deve avere una espressione (expression).

Quando viene utilizzata nel codice principale di un nodo Filter, Compute o Database, l'istruzione RETURN termina l'elaborazione del codice ESQL del nodo e passa il controllo al nodo successivo. In tali casi, se è presente expression, deve essere valutata in un valore BOOLEAN. Se expression non è presente, un nodo Filter suppone un valore UNKNOWN ed esegue la propagazione al proprio terminale unknown; i nodi Compute e Database eseguono la propagazione ai propri terminali out.

La tabella riportata di seguito illustra le differenze tra l'istruzione RETURN utilizzata nei nodi Compute, Filter e Database.
  Valore di ritorno Risultato
Nodo Compute:
RETURN TRUE Propaga il messaggio al terminale out.
  FALSE Non esegue la propagazione.
  UNKNOWN Non esegue la propagazione.
RETURN;   Propaga il messaggio al terminale out.
Nodo Filter:
RETURN TRUE Propaga il messaggio al terminale true.
  FALSE Propaga il messaggio al terminale false.
  UNKNOWN Propaga il messaggio al terminale unknown.
RETURN;   Propaga il messaggio al terminale unknown.
Nodo Database:
RETURN TRUE Propaga il messaggio al terminale out.
  FALSE Non esegue la propagazione.
  UNKNOWN Non esegue la propagazione.
RETURN;   Propaga il messaggio al terminale out.

Esempio

L'esempio riportato di seguito, basato sul Messaggio di esempio, illustra il modo in cui è possibile utilizzare questa istruzione:
-- Declare variables --
DECLARE a INT;
DECLARE PriceTotal FLOAT;
DECLARE NumItems INT;

-- Initialize values --
SET a = 1;
SET NumItems = 0;
SET PriceTotal = 0.0;

-- Calculate value of order, however if this is a bulk purchase, the --
-- order will need to be handled differently (discount given) so return TRUE  --
-- or FALSE depending on the size of the order --
WHILE a <= CARDINALITY(Invoice.Purchases.Item[a] DO
   SET NumItems = NumItems + Invoice.Purchases.Item[a].Quantity;
   SET PriceTotal = PriceTotal + Invoice.Purchases.Item[a].UnitPrice;
   SET a = a + 1;
END;
RETURN PriceTotal/NumItems > 42;
Se il prezzo medio degli articoli è maggiore di 42, viene restituito TRUE; in caso contrario, viene restituito FALSE. Quindi, un nodo Filter non può instradare messaggi che descrivono articoli costosi in un percorso diverso dai messaggi che descrivono articoli economici.

Consultare Istruzione PROPAGATE per un esempio di RETURN FALSE per evitare la propagazione implicita al termine dell'elaborazione in un nodo Compute.

Concetti correlati
Panoramica di ESQL
Attività correlate
Sviluppo di ESQL
Riferimenti correlati
Nodo Compute
Nodo Filter
Diagrammi di sintassi: tipi disponibili
Istruzioni ESQL
Istruzione PROPAGATE
Messaggio di esempio
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak05130_