Δήλωση ΠΕΡΙΠΤΩΣΗΣ σε Oracle PL/SQL με Παραδείγματα
⚡ Έξυπνη Σύνοψη
Η πρόταση CASE PL/SQL επιλέγει μία εναλλακτική από αρκετές με βάση έναν επιλογέα, όπως ακριβώς και η πρόταση IF-THEN-ELSIF, αλλά με μεγαλύτερη σαφήνεια. Μια απλή CASE ταιριάζει με μια τιμή επιλογέα, ενώ μια αναζητούμενη CASE αξιολογεί μια συνθήκη σε κάθε όρο WHEN και εκτελεί την πρώτη που είναι αληθής.

Τι είναι μια δήλωση CASE;
Μια πρόταση CASE είναι παρόμοια με την πρόταση IF-THEN-ELSIF· επιλέγει μια εναλλακτική με βάση μια συνθήκη από τις διαθέσιμες επιλογές.
- Μια πρόταση CASE χρησιμοποιεί έναν "επιλογέα" αντί για μια λογική έκφραση για να επιλέξει την ακολουθία.
- Η τιμή της έκφρασης στην πρόταση CASE αντιμετωπίζεται ως επιλογέας.
- Η έκφραση μπορεί να είναι οποιουδήποτε τύπου (αριθμητική, μεταβλητές, κ.λπ.).
- Σε κάθε εναλλακτική λύση αντιστοιχίζεται μια συγκεκριμένη προκαθορισμένη τιμή (επιλογέας) και εκτελείται η εναλλακτική λύση της οποίας η τιμή επιλογέα ταιριάζει με την τιμή της υπό όρους έκφρασης.
- Σε αντίθεση με το IF-THEN-ELSIF, η πρόταση CASE μπορεί επίσης να χρησιμοποιηθεί σε προτάσεις SQL.
- Το μπλοκ ELSE σε μια εντολή CASE περιέχει την ακολουθία που θα εκτελεστεί όταν δεν έχει επιλεγεί καμία από τις εναλλακτικές λύσεις.
Σύνταξη
CASE (expression) WHEN <value1> THEN action_block1; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- Στην παραπάνω σύνταξη, η παράσταση επιστρέφει μια τιμή που θα μπορούσε να είναι οποιουδήποτε τύπου.
- Κάθε πρόταση «WHEN» είναι μια εναλλακτική λύση που έχει ένα και ένα .
- Επιλέγεται η ρήτρα 'WHEN' της οποίας η τιμή ταιριάζει με την έκφραση και η εκτελείται.
- Το μπλοκ 'ELSE' είναι προαιρετικό και περιέχει το για εκτέλεση όταν δεν υπάρχει αντίστοιχη εναλλακτική λύση.
- Το 'END' σηματοδοτεί το τέλος της πρότασης CASE και είναι υποχρεωτικό μέρος της CASE.
Παράδειγμα 1: Αριθμητικός Υπολογισμός Χρησιμοποιώντας CASE
Σε αυτό το παράδειγμα, κάνουμε έναν αριθμητικό υπολογισμό μεταξύ δύο αριθμών, του 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; /
Code εξήγηση
- Code γραμμή 2: Δήλωση της μεταβλητής 'a' ως 'NUMBER' και αρχικοποίησή της με την τιμή '55'.
- Code γραμμή 3: Δήλωση της μεταβλητής 'b' ως 'ΑΡΙΘΜΟΣ' και αρχικοποίησή της με την τιμή '5'.
- Code Γραμμή 4: Δήλωση της μεταβλητής 'arth_operation' ως 'VARCHAR2' μεγέθους 20 και αρχικοποίησή της με την τιμή 'MULTIPLY'.
- Code γραμμή 6: Εκτύπωση της δήλωσης «Το πρόγραμμα ξεκίνησε».
- Code Γραμμή 7: Η συνάρτηση CASE ελέγχει την τιμή της παράστασης. Εδώ, η τιμή του 'arth_operation' είναι 'MULTIPLY', το οποίο αντιμετωπίζεται ως επιλογέας.
- Code Γραμμή 10: Η ρήτρα WHEN με τιμή 'MULTIPLY' ταιριάζει με τον επιλογέα, επομένως ο ελεγκτής επιλέγει αυτό το μπλοκ ενέργειας και εκτυπώνει 'Πολλαπλασιασμός των αριθμών είναι: 275'.
- Code γραμμή 13: Σηματοδοτεί το τέλος της πρότασης CASE.
- Code γραμμή 14: Εκτύπωση της δήλωσης «Το πρόγραμμα ολοκληρώθηκε».
Code Παραγωγή
Program started. Multiplication of the numbers are: 275 Program completed.
Δήλωση ΑΝΑΖΗΤΗΣΗΣ ΠΕΡΙΠΤΩΣΗΣ
Η αναζητούμενη πρόταση CASE είναι παρόμοια με την πρόταση CASE, αλλά αντί να χρησιμοποιεί έναν επιλογέα για να επιλέξει την εναλλακτική, η αναζητούμενη CASE έχει την συνθήκη που ορίζεται απευθείας στον όρο WHEN.
- Η πρώτη πρόταση WHEN που ικανοποιεί τη συνθήκη εκτελείται και ο ελεγκτής παραλείπει τις υπόλοιπες εναλλακτικές λύσεις.
Σύνταξη
CASE WHEN <expression1> THEN action_block1; 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; /
Code εξήγηση
- Code γραμμή 2: Δήλωση της μεταβλητής 'a' ως 'NUMBER' και αρχικοποίησή της με την τιμή '55'.
- Code γραμμή 3: Δήλωση της μεταβλητής 'b' ως 'ΑΡΙΘΜΟΣ' και αρχικοποίησή της με την τιμή '5'.
- Code Γραμμή 4: Δήλωση της μεταβλητής 'arth_operation' ως 'VARCHAR2' μεγέθους 20 και αρχικοποίησή της με την τιμή 'DIVIDE'.
- Code γραμμή 6: Εκτύπωση της δήλωσης «Το πρόγραμμα ξεκίνησε».
- Code γραμμή 7: Ξεκινά η αναζητούμενη πρόταση CASE. Οι όροι για ADD, SUBTRACΤα T και MULTIPLY παραλείπονται, καθώς οι συνθήκες τους δεν ταιριάζουν με την τιμή του 'arth_operation'.
- Code γραμμή 14: Η έκφραση της πρότασης WHEN “arth_operation = 'DIVIDE'” ικανοποιείται και επιστρέφει TRUE.
- Code γραμμή 15: Εκτελείται το μπλοκ ενεργειών της ρήτρας WHEN και εκτυπώνεται η φράση «Διαίρεση των αριθμών είναι: 11».
- Code γραμμή 17: Σηματοδοτεί το τέλος της πρότασης CASE.
- Code γραμμή 18: Εκτύπωση της δήλωσης «Το πρόγραμμα ολοκληρώθηκε».
Code Παραγωγή
Program started. Division of the numbers are: 11 Program completed.
Σύγκριση περίπτωσης και αναζήτησε περίπτωση
Και οι δύο μορφές επιλέγουν έναν κλάδο, αλλά διαφέρουν στον τρόπο επιλογής του, όπως συνοψίζεται παρακάτω.
| Χαρακτηριστικά | Περιγραφή | Χρήση |
|---|---|---|
| ΜΕΛΕΤΕΣ ΠΕΡΙΠΤΩΣΗΣ | Παρόμοιο με το ΑΝ-ΤΟΤΕ-ELSIF Δήλωση. Ένας «επιλογέας» χρησιμοποιείται για την επιλογή της εναλλακτικής λύσης αντί για μια λογική έκφραση. | Χρησιμοποιείται για την επιλογή από διάφορες εναλλακτικές λύσεις χρησιμοποιώντας έναν επιλογέα. |
| ΑΝΑΖΗΤΗΣΗ ΥΠΟΘΕΣΗ | Μια πρόταση CASE χωρίς πραγματικό επιλογέα. Αντίθετα, περιέχει τη συνθήκη (η οποία αξιολογείται ως TRUE ή FALSE) που επιλέγει την εναλλακτική λύση. | Χρησιμοποιείται για την επιλογή από περισσότερες από δύο εναλλακτικές λύσεις, κυρίως με συνθήκες εύρους. |
