Ενώ Loop in Oracle PL/SQL με Παράδειγμα

⚡ Έξυπνη Σύνοψη

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

  • 🔁 Σκοπός: Ένας βρόχος WHILE εκτελείται όσο μια συνθήκη είναι αληθής και σταματά μόλις αυτή γίνει ψευδής.
  • 🚦 Έλεγχος Εισόδου: Η συνθήκη ελέγχεται πριν από το μπλοκ, επομένως ο βρόχος μπορεί να εκτελεστεί μηδέν φορές.
  • 🧮 Δεν απαιτείται ΕΞΟΔΟΣ: Η συνθήκη επικυρώνεται έμμεσα σε κάθε επανάληψη, επομένως δεν απαιτείται ρητή EXIT.
  • 🔢 Μετρητής: Μια μεταβλητή μέσα στο μπλοκ πρέπει να αλλάξει, ώστε η συνθήκη τελικά να γίνει ψευδής.
  • ♾️ Άπειρος Κίνδυνος: Αν ο μετρητής δεν αποτύχει ποτέ στη συνθήκη, ο βρόχος εκτελείται επ' αόριστον.
  • έναντι ΓΙΑ: Χρησιμοποιήστε WHILE όταν ο αριθμός επαναλήψεων είναι άγνωστος και FOR όταν είναι σταθερός.
  • 🚪 Πρόωρη έξοδος: Η συνθήκη EXIT WHEN μπορεί ακόμα να εγκαταλείψει έναν βρόχο WHILE πριν η συνθήκη γίνει ψευδής.

Oracle PL/SQL while Loop

Τι είναι ένας βρόχος 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.

Παράδειγμα βρόχου PL/SQL while
Παράδειγμα βρόχου PL/SQL 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 εξαλείφει εντελώς τον κίνδυνο, επειδή ο μετρητής του διαχειρίζεται αυτόματα.

Συχνές Ερωτήσεις

Ναι. Επειδή η συνθήκη ελέγχεται πριν από το μπλοκ, αν είναι ψευδής στην αρχή, το σώμα δεν εκτελείται ποτέ. Αυτός ο έλεγχος εισόδου είναι η κύρια διαφορά από έναν βασικό βρόχο, ο οποίος εκτελείται πάντα μία φορά.

Βεβαιωθείτε ότι μια μεταβλητή μέσα στον βρόχο αλλάζει προς τη συνθήκη εξόδου σε κάθε επανάληψη. Η προσθήκη μιας μεταβλητής EXIT WHEN σε μέγιστο αριθμό είναι ένα χρήσιμο δίχτυ ασφαλείας για βρόχους που βασίζονται σε δεδομένα.

Χρησιμοποιήστε WHILE όταν ο αριθμός των επαναλήψεων δεν είναι γνωστός και εξαρτάται από μια συνθήκη. Χρησιμοποιήστε FOR όταν κάνετε επανάληψη σε ένα σταθερό εύρος, καθώς ο μετρητής του διαχειρίζεται αυτόματα.

Συχνά. Η Τεχνητή Νοημοσύνη μπορεί να ελέγξει εάν η μεταβλητή ελέγχου κινείται προς την συνθήκη εξόδου και να προειδοποιήσει όταν δεν κινείται. Ένας βρόχος του οποίου η έξοδος εξαρτάται από ζωντανά δεδομένα χρειάζεται ακόμη μια δοκιμή για να είναι σίγουρος.

Ναι. Παρόλο που ένας βρόχος WHILE τερματίζεται όταν η κορυφαία συνθήκη του γίνει ψευδής, μια ΕΞΟΔΟΣ ή μια ΕΞΟΔΟΣ WHEN μέσα στο σώμα μπορεί να τον εγκαταλείψει νωρίς, κάτι που είναι χρήσιμο για την έξοδο σε μια ειδική περίπτωση.

Συνοψίστε αυτήν την ανάρτηση με: