Ενώ Loop in Oracle PL/SQL με Παράδειγμα
⚡ Έξυπνη Σύνοψη
Oracle Ο βρόχος WHILE PL/SQL επαναλαμβάνει ένα μπλοκ κώδικα όσο μια συνθήκη παραμένει αληθής. Είναι ένας βρόχος ελέγχου εισόδου, που ελέγχει τη συνθήκη εξόδου πριν από κάθε επανάληψη, επομένως το μπλοκ μπορεί να εκτελεστεί μηδέν φορές και δεν χρειάζεται ρητή λέξη-κλειδί EXIT.

Τι είναι ένας βρόχος While PL/SQL;
The Ενώ βρόχος στην PL/SQL λειτουργεί παρόμοια με τη βασική πρόταση βρόχου, εκτός από το ότι η συνθήκη εξόδου βρίσκεται στην αρχή του βρόχου. Λειτουργεί σαν βρόχος ελέγχου εισόδου, όπου το μπλοκ εκτέλεσης εκτελείται μόνο εάν η συνθήκη ικανοποιείται, επειδή η συνθήκη εξόδου ελέγχεται πριν από την εκτέλεση.
Δεν απαιτεί ρητά τη λέξη-κλειδί 'EXIT' για έξοδο από τον βρόχο, καθώς επικυρώνει τη συνθήκη έμμεσα κάθε φορά.
Σύνταξη PL/SQL while Loop
WHILE <EXIT condition> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
- Η λέξη-κλειδί «WHILE» σηματοδοτεί την αρχή του βρόχου και η λέξη-κλειδί «END LOOP» σηματοδοτεί το τέλος.
- Η συνθήκη εξόδου αξιολογείται κάθε φορά πριν ξεκινήσει η εκτέλεση του μέρους εκτέλεσης.
- Το μπλοκ εκτέλεσης περιέχει όλο τον κώδικα που χρειάζεται να εκτελεστεί.
- Το τμήμα εκτέλεσης μπορεί να περιέχει οποιαδήποτε εκτελέσιμη εντολή.
Παράδειγμα Oracle PL/SQL while Loop
Σε αυτό το παράδειγμα, τυπώνουμε αριθμούς από το 1 έως το 5 χρησιμοποιώντας μια εντολή βρόχου WHILE.

DECLARE a NUMBER := 1; BEGIN dbms_output.put_line('Program started'); WHILE (a <= 5) LOOP dbms_output.put_line(a); a:= a+1; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Επεξήγηση:
- Code γραμμή 2: Δηλώνοντας τη μεταβλητή 'a' ως 'NUMBER' και αρχικοποιώντας την με την τιμή '1'.
- Code γραμμή 4: Εκτύπωση της δήλωσης «Το πρόγραμμα ξεκίνησε».
- Code γραμμή 5: Η λέξη-κλειδί 'WHILE' σηματοδοτεί την αρχή του βρόχου και ελέγχει εάν η τιμή του 'a' είναι μικρότερη ή ίση με 5.
- Code γραμμή 7: Εκτυπώνει την τιμή του 'a'.
- Code γραμμή 8: Αυξάνει την τιμή του 'a' κατά 1.
- Code γραμμή 9: Η λέξη-κλειδί «ΤΕΛΟΣ ΒΡΟΧΟΥ» σηματοδοτεί το τέλος του μπλοκ εκτέλεσης.
- Οι γραμμές 7 και 8 συνεχίζουν να εκτελούνται μέχρι το 'a' να φτάσει την τιμή 6, οπότε η συνθήκη επιστρέφει FALSE και ο έλεγχος τερματίζει την βρόχος.
- Code γραμμή 10: Εκτύπωση της δήλωσης «Το πρόγραμμα ολοκληρώθηκε».
Βρόχος WHILE vs Βρόχος FOR vs Βασικός Βρόχος
Η PL/SQL προσφέρει τρεις τύπους βρόχων και η επιλογή του σωστού διατηρεί τον κώδικα σαφή. Ο βρόχος WHILE είναι κατάλληλος για επανάληψη που καθορίζεται από συνθήκες, ενώ οι άλλοι δύο είναι κατάλληλοι για σταθερό αριθμό ή για ρητά ελεγχόμενη έξοδο.
| Βρόχος | Κριτήρια εξόδου | καλύτερα χρησιμοποιείται όταν |
|---|---|---|
| βρόχος WHILE | Η συνθήκη στην κορυφή γίνεται ψευδής | Ο αριθμός των επαναλήψεων είναι άγνωστος |
| βρόχος ΓΙΑ | Ο μετρητής φτάνει στο τέλος του εύρους | Ο αριθμός των επαναλήψεων είναι γνωστός |
| Βασικός βρόχος | Ρητή ΈΞΟΔΟΣ στο τετράγωνο | Η έξοδος ελέγχεται χειροκίνητα |
Επειδή ο βρόχος WHILE ελέγχει την συνθήκη του στην κορυφή, το σώμα μπορεί να εκτελεστεί μηδέν φορές αν η συνθήκη είναι ψευδής εξαρχής. Αυτή είναι η βασική διαφορά από έναν βασικό βρόχο, του οποίου το σώμα εκτελείται πάντα τουλάχιστον μία φορά.
Αποφυγή ενός άπειρου βρόχου While
Ένας βρόχος WHILE εξαρτάται εξ ολοκλήρου από την κίνηση της μεταβλητής ελέγχου προς την συνθήκη εξόδου. Εάν δεν συμβεί ποτέ αυτό, ο βρόχος εκτελείται επ' αόριστον και η συνεδρία κολλάει. Τρεις συνήθειες το αποτρέπουν αυτό:
- Αλλάζετε τον μετρητή σε κάθε επανάληψη. Το παράδειγμα αυξάνει το 'a' μέσα στον βρόχο. Η αφαίρεση αυτής της γραμμής θα επαναλάμβανε τον βρόχο για πάντα.
- Δοκιμάστε το όριο. Επιβεβαιώστε ότι η συνθήκη μπορεί όντως να γίνει ψευδής για την αρχική τιμή, όχι μόνο για μια ιδανική περίπτωση.
- Προσθέστε μια ΕΞΟΔΟ Ασφαλείας ΟΤΑΝ. Για έναν βρόχο που βασίζεται σε δεδομένα, μια συνάρτηση EXIT WHEN σε μέγιστο αριθμό επαναλήψεων λειτουργεί ως προστασία από μια μη αναμενόμενη τιμή.
Όταν ο αριθμός των επαναλήψεων είναι πραγματικά σταθερός, ένας βρόχος FOR εξαλείφει εντελώς τον κίνδυνο, επειδή ο μετρητής του διαχειρίζεται αυτόματα.
