Espressione CASE e Funzione DECODE

Lo statement CASE è come l'istruzione If-Then-Else ma usa la parola chiave WHEN. L'istruzione è di tipo "top to bottom"; se l'espressione soddisfa la prima condizione viene eseguita la corrispondente clausola THEN e l'esecuzione passa all' END, altrimenti viene controllata la condizione 2 e così via; se nessuna condizione è soddisfatta il risultato è fornito da ELSE.

S i n t a s s i
CASE  [ expression ]
  WHEN condition_1 THEN result_1
  WHEN condition_2 THEN result_2
  ...
  WHEN condition_n THEN result_n
  ELSE result_m
END

L'espressione dopo il CASE non è obbligatoria ed è possibile inserirla direttamente dopo la WHEN insieme alla condizione da soddisfare.
E s e m p i o
select LAST_NAME, JOB_ID, SALARY,
CASE JOB_ID
WHEN  'IT_PROG' THEN 1.10*SALARY
WHEN 'ST_CLERK' THEN  1.15*SALARY
WHEN 'SA_REP' THEN  1.20*SALARY
ELSE SALARY
END AS REVISED_SALARY
from employees;
oppure
select LAST_NAME, JOB_ID, SALARY,
CASE
WHEN  JOB_ID = 'IT_PROG' THEN 1.10*SALARY
WHEN JOB_ID = 'ST_CLERK' THEN  1.15*SALARY
WHEN JOB_ID = 'SA_REP' THEN  1.20*SALARY
ELSE SALARY
END AS REVISED_SALARY
from employees;

L'espressione CASE compila con lo standard ANSI SQL mentre la funzione DECODE è specifica della sintassi Oracle.

Esempio:
SELECT LAST_NAME, JOB_ID, SALARY,
      DECODE(job_id, 'IT_PROG', 1.10*salary,
                     'ST_CLERK', 1.15*salary,
                     'SA_REP', 1.20*salary,
             salary) REVISED_SALARY
FROM employees;

Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database