This is a read-only copy of the MariaDB Knowledgebase generated on 2024-12-22. For the latest, interactive version please visit https://mariadb.com/kb/.

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.

Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.