CASE è una funzione complessa che ha due formati; il formato con when semplice ed il formato con when con ricerca. In entrambi i formati, CASE restituisce un valore, il cui risultato controlla il percorso dell'elaborazione successiva.
Entrambi i formati di CASE restituiscono un valore che dipende da una serie di regole definite nelle clausole WHEN.
Nel formato con when semplice, source_value viene confrontato con ciascun test_value fino a quando viene rilevata una corrispondenza. Il risultato della funzione CASE è il valore del corrispondente result_value. Il tipo di dati di source_value deve quindi essere confrontabile con il tipo di dati di ciascun test_value.
La funzione CASE deve contenere almeno una clausola WHEN. La clausola ELSE è facoltativa. L'espressione ELSE predefinita è NULL. Un'espressione CASE è delimitata da END. I valori di test non devono essere valori letterali.
La versione della clausola con when con ricerca è simile, ma consente di verificare un numero di valori differenti.
DECLARE CurrentMonth CHAR; DECLARE MonthText CHAR; SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2); SET MonthText = CASE CurrentMonth WHEN '01' THEN 'January' WHEN '02' THEN 'February' WHEN '03' THEN 'March' WHEN '04' THEN 'April' WHEN '05' THEN 'May' WHEN '06' THEN 'June' ELSE 'Second half of year' END
DECLARE CurrentMonth CHAR; DECLARE MonthText CHAR; SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2); SET MonthText = CASE WHEN Month = '01' THEN 'January' WHEN Month = '02' THEN 'February' WHEN Month = '03' THEN 'March' WHEN Month = '04' THEN 'April' WHEN Month = '05' THEN 'May' WHEN Month = '06' THEN 'June' ELSE 'Second half of year' END
DECLARE CurrentMonth CHAR; DECLARE CurrentYear CHAR; DECLARE MonthText CHAR; SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2); SET CurrentYear = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 1 FOR 4); SET MonthText = CASE WHEN CurrentMonth = '01' THEN 'January' WHEN CurrentMonth = '02' THEN 'February' WHEN CurrentMonth = '03' THEN 'March' WHEN CurrentYear = '2000' THEN 'A month in the Year 2000' WHEN CurrentYear = '2001' THEN 'A month in the Year 2001' ELSE 'Not first three months of any year or a month in the Year 2000 or 2001' END;