Oracle PL / SQL: Δήλωση CASE με παραδείγματα

Πίνακας περιεχομένων:

Anonim

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

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

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

Σύνταξη:

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

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

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

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

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

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

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

ΔΗΛΩΣΗ ΑΝΑΖΗΤΗΣΗΣ ΠΕΡΙΠΤΩΣΗΣ

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

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

Σύνταξη:

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

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

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

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

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

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

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

Περίληψη

ΤΥΠΟΣ ΠΕΡΙΓΡΑΦΗ ΧΡΗΣΗ

ΥΠΟΘΕΣΗ

Παρόμοια με τη δήλωση IF-THEN-ELSIF. Ένα «SELECTOR» χρησιμοποιείται για την επιλογή των εναλλακτικών αντί της έκφρασης Boolean.

Χρησιμοποιείται για να επιλέξετε από πολλές εναλλακτικές λύσεις χρησιμοποιώντας το «SELECTOR»

ΑΝΑΖΗΤΗΣΗ ΠΕΡΙΠΤΩΣΗ

Δήλωση CASE χωρίς πραγματικό «SELECTOR». Αντ 'αυτού, περιέχει την πραγματική συνθήκη (η οποία αξιολογείται σε TRUE / FALSE) που θα επιλέξει τις εναλλακτικές.

Χρησιμοποιείται κυρίως για να επιλέξει περισσότερες από δύο εναλλακτικές.