L'istruzione CASE
Sintassi
CASE valore_case WHEN valore_when THEN lista_istruzioni [WHEN valore_when THEN lista_istruzioni] ... [ELSE lista_istruzioni] END CASE
Oppure:
CASE WHEN condizione_di_ricerca THEN lista_istruzioni [WHEN condizione_di_ricerca THEN lista_istruzioni] ... [ELSE lista_istruzioni] END CASE
Spiegazione
L'istruzione CASE
degli Stored Program implementa un costrutto condizionale complesso. Se una condizione_di_ricerca
risulta true, vengono eseguite le istruzioni SQL corrispondenti. Se nessuna condizione si verifica, viene eseguita la lista_istruzioni
della clausola ELSE
. Ogni lista_istruzioni
consiste di una o più istruzioni.
Se nessuna condizione_di_ricerca
corrisponde ai CASE
e l'istruzione non ha una clausola ELSE
, si ottiene un errore Case not found.
Ogni lista_istruzioni
consiste di una o più istruzioni; una lista_istruzioni
vuota non è valida. Per gestire i casi in cui il valore non corrisponde a nessuna clausola WHEN
, si può usare un ELSE
che contiene un blocco BEGIN ... END
vuoto, come mostrato nel seguente esempio:
DELIMITER | CREATE PROCEDURE p() BEGIN DECLARE v INT DEFAULT 1; CASE v WHEN 2 THEN SELECT v; WHEN 3 THEN SELECT 0; ELSE BEGIN END; END CASE; END; |
(L'indentazione usata qui per la clausola ELSE
è stata scelta solo per chiarezza e non ha altri significati.)
Nota: La sintassi dell'istruzione CASE
usata negli Stored Program differisce leggermente da quella usata nell'espressione CASE descritta in http://kb.askmonty.org/it/funzioni-per-il-controllo-del-flusso: l'istruzione CASE
non può avere una clausola ELSE NULL
e termina con END CASE
invece di END
.