Oracle PL / SQL: istruzione CASE con esempi

Sommario:

Anonim

Cos'è la dichiarazione CASE?

Un'istruzione CASE è simile all'istruzione IF-THEN-ELSIF che seleziona un'alternativa in base alla condizione dalle opzioni disponibili.

  • L'istruzione CASE utilizza "selector" anziché un'espressione booleana per scegliere la sequenza.
  • Il valore dell'espressione nell'istruzione CASE verrà considerato come un selettore.
  • L'espressione potrebbe essere di qualsiasi tipo (aritmetica, variabili, ecc.)
  • A ciascuna alternativa viene assegnato un determinato valore predefinito (selettore) e verrà eseguita l'alternativa con il valore del selettore che 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 nell'istruzione CASE contiene la sequenza che deve essere eseguita quando nessuna delle alternative è stata selezionata.

Sintassi:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  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.).
  • Ogni clausola "WHEN" viene trattata come un'alternativa con e .
  • Verrà selezionata la clausola "WHEN" che corrisponde al valore di quello dell'espressione e verrà eseguito il corrispondente.
  • Il blocco 'ELSE' è opzionale e contiene 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 Case

In questo esempio, eseguiremo calcoli aritmetici tra due numeri 55 e 5.

DECLAREa NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='MULTIPLY’;BEGINdbms_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 "NUMERO" e inizializzazione con valore "55".
  • Riga codice 3: dichiarazione della variabile "b" come tipo di dati "NUMERO" e inizializzazione con valore "5."
  • Riga di codice 4: dichiarazione della variabile "arth_operation" come tipo di dati "VARCHAR2" di dimensione 20 e inizializzazione con valore "MULTIPLY".
  • Riga di codice 6: stampa dell'istruzione "Programma avviato".
  • Riga di codice 7: CASE controlla il valore dell'espressione. In questo caso, il valore della variabile "arth_operation" è "MULTIPLY". Questo valore verrà ora considerato 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 "La moltiplicazione dei numeri sono: 275".
  • Riga di codice 13: segna la fine dell'istruzione CASE.
  • Riga di codice 14: stampa dell'istruzione "Programma completato".

Uscita codice:

Program started.Multiplication of the numbers are: 275Program completed.

Istruzione SEARCHED CASE

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.

  • La prima clausola WHEN che soddisfa la condizione verrà eseguita e il controller salterà le restanti alternative.

Sintassi:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • Nella sintassi precedente, ogni clausola WHEN ha e separati.
  • Verrà eseguita la clausola WHEN per la quale l'espressione restituisce TRUE.
  • Il blocco 'ELSE' è opzionale e contiene 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 ricercato

In questo esempio, eseguiremo calcoli aritmetici tra due numeri 55 e 5.

DECLARE a NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='DIVIDE';BEGINdbms_output.put_line(‘Program started.' );CASEWHEN 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 "NUMERO" e inizializzazione con valore "55".
  • Riga codice 3: dichiarazione della variabile "b" come tipo di dati "NUMERO" e inizializzazione con valore "5".
  • Riga di codice 4: dichiarazione della variabile "arth_operation" come tipo di dati "VARCHAR2" di dimensione 20 e inizializzazione con il valore "DIVIDE".
  • Riga di codice 6: stampa dell'istruzione "Programma avviato".
  • Riga di codice 7: inizia l'istruzione SEARCHED CASE. Il codice dalla riga 8 alla riga 13 viene ignorato poiché il valore del selettore (ADD, SUBTRACT, MULTIPLY) non corrisponde al valore di "arth_operation".
  • Riga di codice 14: l'espressione della clausola WHEN "arth_operation = 'DIVIDE'" è soddisfatta e l'espressione restituisce TRUE.
  • Riga di codice 15: Action_block della clausola WHEN verrà eseguito e verrà stampato il messaggio "Divisione dei numeri: 11".
  • Riga di codice 17: segna la fine dell'istruzione CASE.
  • Riga di codice 18: stampa dell'istruzione "Programma completato".

Uscita codice:

Program started.Division of the numbers are: 11Program completed.

Sommario

GENERE DESCRIZIONE UTILIZZO

ASTUCCIO

Simile all'istruzione IF-THEN-ELSIF. Un "SELETTORE" viene utilizzato per scegliere le alternative invece dell'espressione booleana.

Utilizzato per selezionare tra diverse alternative utilizzando "SELETTORE"

CASO RICERCATO

Istruzione CASE senza "SELECTOR" effettivo. Invece, contiene la condizione effettiva (che restituisce VERO / FALSO) che selezionerà le alternative.

Utilizzato principalmente per scegliere tra più di due alternative.