Δήλωση ΠΕΡΙΠΤΩΣΗΣ σε 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) που θα επιλέξει τις εναλλακτικές. | Χρησιμοποιείται για την επιλογή από περισσότερες από δύο εναλλακτικές ως επί το πλείστον. |