Dichiarazione del CASO in Oracle PL/SQL con esempi
โก Riepilogo intelligente
L'istruzione CASE in PL/SQL seleziona un'alternativa tra diverse opzioni in base a un selettore, in modo simile a IF-THEN-ELSIF ma piรน chiaro. Un semplice CASE confronta un valore del selettore, mentre un CASE con ricerca valuta una condizione in ogni clausola WHEN ed esegue la prima che risulta vera.

Che cos'รจ un'affermazione CASE?
Un'istruzione CASE รจ simile all'istruzione IF-THEN-ELSIF; seleziona un'alternativa in base a una condizione tra le opzioni disponibili.
- Un'istruzione CASE utilizza un "selettore" anzichรฉ un'espressione booleana per scegliere la sequenza.
- Il valore dell'espressione nell'istruzione CASE viene trattato come un selettore.
- L'espressione puรฒ essere di qualsiasi tipo (aritmetica, variabili, ecc.).
- A ciascuna alternativa viene assegnato un determinato valore predefinito (selettore) e viene eseguita l'alternativa il cui valore del selettore corrisponde al valore dell'espressione condizionale.
- A differenza di IF-THEN-ELSIF, l'istruzione CASE puรฒ essere utilizzata anche nelle istruzioni SQL.
- Il blocco ELSE in un'istruzione CASE contiene la sequenza da eseguire quando nessuna delle alternative รจ selezionata.
Sintassi
CASE (expression) WHEN <value1> THEN action_block1; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- Nella sintassi sopra riportata, l'espressione restituisce un valore che puรฒ essere di qualsiasi tipo.
- Ogni clausola 'WHEN' รจ un'alternativa che ha un e un .
- Viene selezionata la clausola 'WHEN' il cui valore corrisponde all'espressione e la sua viene eseguito.
- Il blocco 'ELSE' รจ facoltativo e contiene il da eseguire quando non ci sono alternative corrispondenti.
- 'END' indica la fine dell'istruzione CASE ed รจ una parte obbligatoria del CASE.
Esempio 1: Calcolo aritmetico utilizzando CASE
In questo esempio, eseguiamo un calcolo aritmetico tra due numeri, 55 e 5.
DECLARE a NUMBER := 55; b NUMBER := 5; arth_operation VARCHAR2(20) := 'MULTIPLY'; BEGIN dbms_output.put_line('Program started.'); CASE (arth_operation) WHEN 'ADD' THEN dbms_output.put_line('Addition of the numbers are: '|| a+b ); WHEN 'SUBTRACT' THEN dbms_output.put_line('Subtraction of the numbers are: '||a-b ); WHEN 'MULTIPLY' THEN dbms_output.put_line('Multiplication of the numbers are: '|| a*b ); WHEN 'DIVIDE' THEN dbms_output.put_line('Division of the numbers are:'|| a/b); ELSE dbms_output.put_line('No operation action defined. Invalid operation'); END CASE; dbms_output.put_line('Program completed.'); END; /
Code Spiegazione
- Code riga 2: Dichiarazione della variabile 'a' come 'NUMBER' e sua inizializzazione con il valore '55'.
- Code riga 3: Dichiarazione della variabile 'b' come 'NUMBER' e sua inizializzazione con il valore '5'.
- Code riga 4: Dichiarazione della variabile 'arth_operation' come 'VARCHAR2' di dimensione 20 e inizializzazione con il valore 'MULTIPLY'.
- Code riga 6: Stampa del messaggio "Programma avviato".
- Code riga 7: CASE controlla il valore dell'espressione. Qui, il valore di 'arth_operation' รจ 'MULTIPLY', che viene trattato come selettore.
- Code riga 10: La clausola WHEN con valore 'MULTIPLY' corrisponde al selettore, quindi il controller seleziona questo blocco di azioni e stampa 'La moltiplicazione dei numeri รจ: 275'.
- Code riga 13: Indica la fine dell'istruzione CASE.
- Code riga 14: Stampa del messaggio "Programma completato".
Code Uscita
Program started. Multiplication of the numbers are: 275 Program completed.
Dichiarazione CASO RICERCATO
L'istruzione CASE con ricerca รจ simile all'istruzione CASE, ma anzichรฉ utilizzare un selettore per scegliere l'alternativa, la condizione nell'istruzione CASE con ricerca รจ definita direttamente nella clausola WHEN.
- Viene eseguita la prima clausola WHEN che soddisfa la condizione e il controller ignora le alternative rimanenti.
Sintassi
CASE WHEN <expression1> THEN action_block1; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- Nella sintassi sopra riportata, ogni clausola WHEN ha un separato E .
- Viene eseguita la clausola WHEN per la quale l'espressione restituisce TRUE.
- Il blocco 'ELSE' รจ facoltativo e contiene il da eseguire quando nessuna delle alternative รจ soddisfacente.
- 'END' indica la fine dell'istruzione CASE ed รจ una parte obbligatoria del CASE.
Esempio 1: Calcolo aritmetico utilizzando CASE ricercato
In questo esempio, eseguiamo un calcolo aritmetico tra due numeri, 55 e 5.
DECLARE a NUMBER := 55; b NUMBER := 5; arth_operation VARCHAR2(20) := 'DIVIDE'; BEGIN dbms_output.put_line('Program started.'); CASE WHEN arth_operation = 'ADD' THEN dbms_output.put_line('Addition of the numbers are: '||a+b ); WHEN arth_operation = 'SUBTRACT' THEN dbms_output.put_line('Subtraction of the numbers are: '|| a-b); WHEN arth_operation = 'MULTIPLY' THEN dbms_output.put_line('Multiplication of the numbers are: '|| a*b ); WHEN arth_operation = 'DIVIDE' THEN dbms_output.put_line('Division of the numbers are: '|| a/b ); ELSE dbms_output.put_line('No operation action defined. Invalid operation'); END CASE; dbms_output.put_line('Program completed.'); END; /
Code Spiegazione
- Code riga 2: Dichiarazione della variabile 'a' come 'NUMBER' e sua inizializzazione con il valore '55'.
- Code riga 3: Dichiarazione della variabile 'b' come 'NUMBER' e sua inizializzazione con il valore '5'.
- Code riga 4: Dichiarazione della variabile 'arth_operation' come 'VARCHAR2' di dimensione 20 e inizializzazione con il valore 'DIVIDE'.
- Code riga 6: Stampa del messaggio "Programma avviato".
- Code riga 7: Inizia l'istruzione CASE cercata. Le clausole per ADD, SUBTRACT e MULTIPLY vengono saltati, poichรฉ le loro condizioni non corrispondono al valore di 'arth_operation'.
- Code riga 14: L'espressione della clausola WHEN "arth_operation = 'DIVIDE'" รจ soddisfatta e restituisce TRUE.
- Code riga 15: Il blocco di azione della clausola WHEN viene eseguito e viene stampato 'La divisione dei numeri รจ: 11'.
- Code riga 17: Indica la fine dell'istruzione CASE.
- Code riga 18: Stampa del messaggio "Programma completato".
Code Uscita
Program started. Division of the numbers are: 11 Program completed.
Confronto tra CASE e CASE RICERCATO
Entrambe le forme scelgono un ramo, ma differiscono nel modo in cui viene selezionato, come riassunto di seguito.
| Tipo | Descrizione | Impiego |
|---|---|---|
| CASI | Simile al SE-THEN-ELSIF istruzione. Un 'selettore' viene utilizzato per scegliere l'alternativa anzichรฉ un'espressione booleana. | Utilizzato per selezionare tra diverse alternative tramite un selettore. |
| CASO RICERCATO | Un'istruzione CASE senza un selettore effettivo. Contiene invece la condizione (che restituisce TRUE o FALSE) che seleziona l'alternativa. | Utilizzato per scegliere tra piรน di due alternative, generalmente con condizioni di intervallo. |
