Dichiarazione del CASO in Oracle PL/SQL con esempi
Cos'è la dichiarazione CASE?
Un'istruzione CASE è simile all'istruzione IF-THEN-ELSIF che seleziona un'alternativa in base alla condizione tra le opzioni disponibili.
- L'istruzione CASE utilizza un "selettore" anziché un'espressione booleana per scegliere la sequenza.
- Il valore dell'espressione nell'istruzione CASE verrà 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 l'alternativa con valore del selettore che corrisponde al valore dell'espressione condizionale verrà eseguita.
- A differenza di IF-THEN-ELSIF, l'istruzione CASE può essere utilizzata anche nelle istruzioni SQL.
- Il blocco ELSE nell'istruzione CASE contiene la sequenza che deve essere eseguita quando nessuna delle alternative è stata selezionata.
Sintassi
CASE (expression) WHEN <valuel> THEN action_blockl; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- Nella sintassi precedente, l'espressione restituirà un valore che potrebbe essere di qualsiasi tipo (variabile, numero, ecc.).
- Ciascuna clausola "WHEN" viene trattata come un'alternativa che ha E .
- Verrà selezionata la clausola 'WHEN' che corrisponde al valore di quello dell'espressione, e quella corrispondente verrà eseguito.
- Il blocco 'ELSE' è facoltativo e contiene il file che deve essere eseguito quando nessuna delle alternative corrisponde al valore dell'espressione.
- 'END' segna la fine dell'istruzione CASE ed è una parte obbligatoria del CASE.
Esempio 1: Calcolo aritmetico utilizzando il caso
In questo esempio, eseguiremo 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; /
Spiegazione del codice
- Riga di codice 2: dichiarazione della variabile 'a' come tipo di dati 'NUMBER' e inizializzazione con il valore '55'.
- Riga di codice 3: dichiarazione della variabile 'b' come tipo di dati 'NUMBER' e inizializzazione con il valore '5.'
- Riga di codice 4: Dichiarazione della variabile 'arth_Operation' come tipo di dati 'VARCHAR2' di dimensione 20 e inizializzazione con il valore 'MULTIPLY'.
- Riga di codice 6: Stampa della dicitura “Programma avviato”.
- Riga di codice 7: CASE controlla il valore dell'espressione. In questo caso il valore della variabile 'arth_operazione' è 'MULTIPLY'. Questo valore verrà ora trattato come un selettore per questa istruzione CASE.
- Riga di codice 10: La clausola WHEN con valore 'MULTIPLY' corrisponde al valore del selettore, quindi il controller selezionerà questo action_block e stamperà il messaggio 'Moltiplicazione dei numeri sono: 275'.
- Code line13: segna la fine dell'istruzione CASE.
- Riga codice14: Stampa della dicitura “Programma completato”.
Uscita del codice
Program started. Multiplication of the numbers are: 275 Program completed.
Dichiarazione CASO RICERCATO
L'istruzione SEARCHED CASE è simile all'istruzione CASE, invece di utilizzare il selettore per selezionare l'alternativa, SEARCHED CASE avrà direttamente l'espressione definita nella clausola WHEN.
- Verrà eseguita la prima clausola WHEN che soddisfa la condizione e il controller salterà le restanti alternative.
Sintassi
CASE WHEN <expression1> THEN action_blockl; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- Nella sintassi precedente, ciascuna clausola WHEN ha la clausola separata E .
- Verrà eseguita la clausola WHEN per la quale l'espressione restituisce TRUE.
- Il blocco 'ELSE' è facoltativo e contiene il file che deve essere eseguito quando nessuna delle alternative soddisfa.
- 'END' segna la fine dell'istruzione CASE ed è una parte obbligatoria di CASE.
Esempio 1: Calcolo aritmetico utilizzando il caso cercato
In questo esempio, eseguiremo 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; /
Spiegazione del codice
- Riga di codice 2: dichiarazione della variabile 'a' come tipo di dati 'NUMBER' e inizializzazione con il valore '55'.
- Riga di codice 3: dichiarazione della variabile 'b' come tipo di dati 'NUMBER' e inizializzazione con il valore '5'.
- Riga di codice 4: dichiarazione della variabile 'arth_operazione' come tipo di dati 'VARCHAR2' di dimensione 20 e inizializzazione con il valore 'DIVIDE.'
- Riga di codice 6: Stampa della dicitura “Programma avviato”.
- Riga di codice 7: inizia l'istruzione SEARCHED CASE. Il codice dalla riga 8 alla riga 13 viene saltato poiché il valore del loro selettore (ADD, SUBTRACT, MULTIPLY) non corrisponde al valore di 'arth_operazione'.
- Riga di codice 14: L'espressione della clausola WHEN “arth_operazione = 'DIVIDE'” è soddisfatta e l'espressione restituisce TRUE.
- Riga di codice 15: Verrà eseguito il blocco_azione della clausola WHEN e verrà stampato il messaggio 'Divisione dei numeri: 11'.
- Riga di codice 17: segna la fine dell'istruzione CASE.
- Riga di codice 18: Stampa della dicitura “Programma completato”.
Uscita del codice
Program started. Division of the numbers are: 11 Program completed.
Sommario
TIPO | DESCRIZIONE | USO |
---|---|---|
CASSA | Simile a SE-THEN-ELSIF dichiarazione. Un 'SELETTORE' viene utilizzato per scegliere le alternative invece dell'espressione booleana. | Utilizzato per selezionare tra diverse alternative utilizzando 'SELECTOR' |
CASO RICERCATO | Istruzione CASE senza un vero e proprio 'SELECTOR'. Contiene invece la condizione effettiva (che restituisce TRUE/FALSE) che selezionerà le alternative. | Principalmente sceglievo tra più di due alternative. |