Funzione CASE

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.

SINTASSI

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.

L'esempio riportato di seguito illustra una funzione CASE con una clausola WHEN semplice. In questo esempio, CASE può essere determinata solo da una variabile specificata accanto alla parola chiave CASE.
 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
Il seguente esempio illustra una funzione CASE con una clausola when con ricerca. Questo esempio è sempre determinato da una variabile CurrentMonth:
 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
In una clausola when con ricerca, è possibile utilizzare diverse variabili nelle clausole WHEN per determinare il risultato. Ciò è dimostrato nel seguente esempio della clausola when con ricerca:
 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;
Concetti correlati
Panoramica di ESQL
Attività correlate
Sviluppo di ESQL
Riferimenti correlati
Diagrammi di sintassi: tipi disponibili
Funzioni ESQL complesse
Istruzione MOVE
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak05600_