Δήλωση ΠΕΡΙΠΤΩΣΗΣ σε Oracle PL/SQL με Παραδείγματα

Τι είναι η δήλωση CASE;

Μια δήλωση CASE είναι παρόμοια με τη δήλωση IF-THEN-ELSIF που επιλέγει μία εναλλακτική με βάση τη συνθήκη από τις διαθέσιμες επιλογές.

  • Η δήλωση CASE χρησιμοποιεί "επιλογέα" αντί για έκφραση Boole για να επιλέξει την ακολουθία.
  • Η τιμή της έκφρασης στη δήλωση CASE θα αντιμετωπίζεται ως επιλογέας.
  • Η έκφραση θα μπορούσε να είναι οποιουδήποτε τύπου (αριθμητική, μεταβλητές κ.λπ.)
  • Σε κάθε εναλλακτική εκχωρείται μια συγκεκριμένη προκαθορισμένη τιμή (επιλογέας) και η εναλλακτική με τιμή επιλογής που ταιριάζει με την τιμή έκφρασης υπό όρους θα εκτελεστεί.
  • Σε αντίθεση με το IF-THEN-ELSIF, η πρόταση CASE μπορεί επίσης να χρησιμοποιηθεί σε προτάσεις SQL.
  • Το μπλοκ ELSE στη δήλωση CASE περιέχει την ακολουθία που πρέπει να εκτελεστεί όταν δεν έχει επιλεγεί καμία από τις εναλλακτικές.

Σύνταξη

CASE (expression)
 WHEN <valuel> THEN action_blockl;
 WHEN <value2> THEN action_block2;
 WHEN <value3> THEN action_block3;
 ELSE action_block_default;
END CASE;
  • Στην παραπάνω σύνταξη, η παράσταση θα επιστρέψει μια τιμή που θα μπορούσε να είναι οποιουδήποτε τύπου (μεταβλητή, αριθμός, κ.λπ.).
  • Κάθε ρήτρα «WHEN» αντιμετωπίζεται ως εναλλακτικές λύσεις που έχουν και .
  • Θα επιλεγεί η ρήτρα 'WHEN' που ταιριάζει με την τιμή της έκφρασης και η αντίστοιχη θα εκτελεστεί.
  • Το μπλοκ 'ELSE' είναι προαιρετικό που κρατά το που πρέπει να εκτελεστεί όταν καμία από τις εναλλακτικές δεν ταιριάζει με την τιμή της έκφρασης.
  • Το «END» σηματοδοτεί το τέλος της δήλωσης CASE και είναι υποχρεωτικό μέρος της CASE.

Παράδειγμα 1: Αριθμητικός Υπολογισμός με χρήση πεζών-κεφαλαίων

Σε αυτό το παράδειγμα, πρόκειται να κάνουμε αριθμητικό υπολογισμό μεταξύ δύο αριθμών 55 και 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;
/

Επεξήγηση κώδικα

  • Γραμμή κώδικα 2: Δήλωση της μεταβλητής 'a' ως τύπου δεδομένων 'NUMBER' και αρχικοποίηση της με τιμή '55'.
  • Γραμμή κώδικα 3: Δήλωση της μεταβλητής 'b' ως τύπου δεδομένων 'NUMBER' και αρχικοποίηση της με τιμή '5'.
  • Γραμμή κώδικα 4: Δήλωση της μεταβλητής 'arth_operation' ως τύπου δεδομένων 'VARCHAR2' μεγέθους 20 και αρχικοποίηση της με τιμή 'MULTIPLY'.
  • Γραμμή κώδικα 6: Εκτύπωση της δήλωσης «Το πρόγραμμα ξεκίνησε».
  • Γραμμή κώδικα 7: CASE ελέγχει την τιμή της έκφρασης. Σε αυτήν την περίπτωση, η τιμή της μεταβλητής 'arth_operation' είναι 'ΠΟΛΛΑΠΛΩΣ'. Αυτή η τιμή θα αντιμετωπίζεται ως επιλογέας για αυτήν τη δήλωση CASE τώρα.
  • Γραμμή κώδικα 10: Ο όρος WHEN με την τιμή "MULTIPLY" ταιριάζει με την τιμή επιλογής, επομένως ο ελεγκτής θα επιλέξει αυτό το action_block και θα εκτυπώσει το μήνυμα "Πολλαπλασιασμός των αριθμών είναι: 275".
  • Γραμμή κώδικα 13: Σηματοδοτεί το τέλος της δήλωσης CASE.
  • Κωδικός γραμμής 14: Εκτύπωση της δήλωσης «Το πρόγραμμα ολοκληρώθηκε».

Έξοδος κώδικα

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

Δήλωση ΑΝΑΖΗΤΗΣΗΣ ΠΕΡΙΠΤΩΣΗΣ

Η πρόταση SEARCHED CASE είναι παρόμοια με την πρόταση CASE, αντί να χρησιμοποιεί τον επιλογέα για την επιλογή της εναλλακτικής, η SEARCHED CASE θα έχει απευθείας την έκφραση που ορίζεται στον όρο WHEN.

  • Η πρώτη ρήτρα WHEN που ικανοποιεί τη συνθήκη θα εκτελεστεί και ο ελεγκτής θα παρακάμψει τις υπόλοιπες εναλλακτικές.

Σύνταξη

CASE
WHEN <expression1> THEN action_blockl; 
WHEN <expression2> THEN action_block2; 
WHEN <expression3> THEN action_block3; 
ELSE action_block_default;
END CASE;
  • Στην παραπάνω σύνταξη, κάθε πρόταση WHEN έχει το ξεχωριστό και .
  • Ο όρος WHEN για τον οποίο η έκφραση επιστρέφει TRUE θα εκτελεστεί.
  • Το μπλοκ 'ELSE' είναι προαιρετικό που κρατά το που πρέπει να εκτελεστεί όταν καμία από τις εναλλακτικές λύσεις δεν ικανοποιεί.
  • Το «END» σηματοδοτεί το τέλος της δήλωσης CASE και είναι υποχρεωτικό μέρος του CASE.

Παράδειγμα 1: Αριθμητικός Υπολογισμός με χρήση πεζών αναζήτησης

Σε αυτό το παράδειγμα, πρόκειται να κάνουμε αριθμητικό υπολογισμό μεταξύ δύο αριθμών 55 και 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;
/

Επεξήγηση κώδικα

  • Γραμμή κώδικα 2: Δήλωση της μεταβλητής 'a' ως τύπου δεδομένων 'NUMBER' και αρχικοποίηση της με τιμή '55'.
  • Γραμμή κώδικα 3: Δήλωση της μεταβλητής 'b' ως τύπου δεδομένων 'NUMBER' και αρχικοποίηση της με τιμή '5'.
  • Γραμμή κώδικα 4: Δήλωση της μεταβλητής 'arth_operation' ως τύπου δεδομένων 'VARCHAR2' μεγέθους 20 και αρχικοποίηση της με τιμή 'DIVIDE'.
  • Γραμμή κώδικα 6: Εκτύπωση της δήλωσης «Το πρόγραμμα ξεκίνησε».
  • Κωδικός γραμμής 7: Η δήλωση ΕΡΩΤΗΣΗ ΠΕΡΙΠΤΩΣΗΣ ξεκινά. Ο κωδικός από τη γραμμή 8 έως τη γραμμή 13 παραλείπεται καθώς η τιμή επιλογής τους (ADD, SUBTRACT, MULTIPLY) δεν ταιριάζει με την τιμή του 'arth_operation'.
  • Γραμμή κώδικα 14: Η έκφραση της ρήτρας WHEN "arth_operation = 'DIVIDE'" ικανοποιήθηκε και η έκφραση επιστρέφει TRUE.
  • Γραμμή κώδικα 15: Το Action_block της ρήτρας WHEN θα εκτελεστεί και θα εκτυπωθεί το μήνυμα "Διαίρεση των αριθμών είναι: 11".
  • Γραμμή κώδικα 17: Σηματοδοτεί το τέλος της δήλωσης CASE.
  • Κωδικός γραμμής 18: Εκτύπωση της δήλωσης «Το πρόγραμμα ολοκληρώθηκε».

Έξοδος κώδικα

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

Σύνοψη

ΤΥΠΟΣ ΠΕΡΙΓΡΑΦΉ ΧΡΗΣΗ
ΠΕΡΙΠΤΩΣΗ Παρόμοια με ΑΝ-ΤΟΤΕ-ELSIF δήλωση. Ένας 'ΕΠΙΛΟΓΟΣ' χρησιμοποιείται για την επιλογή των εναλλακτικών αντί για την έκφραση Boole. Χρησιμοποιείται για την επιλογή από πολλές εναλλακτικές χρησιμοποιώντας το 'SELECTOR'
ΑΝΑΖΗΤΗΣΗ ΥΠΟΘΕΣΗ Δήλωση CASE χωρίς πραγματικό «SELECTOR». Αντίθετα, περιέχει την πραγματική συνθήκη (η οποία αξιολογείται σε TRUE/FALSE) που θα επιλέξει τις εναλλακτικές. Χρησιμοποιείται για την επιλογή από περισσότερες από δύο εναλλακτικές ως επί το πλείστον.