Oracle PL/SQL FOR LOOP με Παράδειγμα

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

Oracle Η συνάρτηση PL/SQL FOR Loop εκτελεί ένα μπλοκ κώδικα έναν γνωστό αριθμό φορών μεταξύ ενός κατώτερου και ενός ανώτερου ορίου. Η μεταβλητή του βρόχου δηλώνεται έμμεσα και αυτοαυξάνεται, επομένως δεν απαιτείται χειροκίνητος μετρητής, και η λέξη-κλειδί REVERSE επιτρέπει στον βρόχο να μετρήσει προς τα κάτω.

  • 🔢 καλύτερα Για: Ένας βρόχος FOR ταιριάζει σε έναν γνωστό αριθμό επαναλήψεων και όχι σε μια συνθήκη ανοιχτού τέλους.
  • 📏 Περιοχή: Ένα κατώτερο και ένα ανώτερο όριο καθορίζουν πόσες φορές εκτελείται ο βρόχος.
  • ⚙️ Έμμεσος μετρητής: Η μεταβλητή βρόχου δηλώνεται αυτόματα και αυξάνεται από μόνη της.
  • 🎯 Πεδίο εφαρμογής: Η μεταβλητή βρόχου υπάρχει μόνο μέσα στον βρόχο.
  • 🔄 ΑΝΤΙΣΤΡΟΦΟ: Η προσθήκη του REVERSE πριν από το κάτω όριο κάνει τον βρόχο να μετράει αντίστροφα.
  • 🪜 Ένθετο: Οι βρόχοι μπορούν να είναι ένθετοι και ο εσωτερικός βρόχος εκτελείται πλήρως για κάθε εξωτερική επανάληψη.
  • 🚪 Αυτόματη έξοδος: Ο βρόχος τερματίζεται αυτόματα όταν η μεταβλητή εγκαταλείψει το εύρος.

Oracle PL/SQL για βρόχο

Τι είναι ένας βρόχος FOR;

Η πρόταση "FOR LOOP" είναι η πλέον κατάλληλη όταν θέλετε να εκτελέσετε κώδικα για έναν γνωστό αριθμό φορών, αντί να βασιστείτε σε κάποια άλλη συνθήκη.

Σε αυτόν τον βρόχο, καθορίζεται ένα κατώτερο και ένα ανώτερο όριο και, εφόσον η μεταβλητή του βρόχου βρίσκεται εντός αυτού του εύρους, ο βρόχος εκτελείται.

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

FOR <loop_variable> in <lower_limit> .. <higher_limit>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;

Επεξήγηση σύνταξης:

  • Η λέξη-κλειδί «FOR» σηματοδοτεί την αρχή του βρόχου και η λέξη-κλειδί «END LOOP» σηματοδοτεί το τέλος.
  • Η μεταβλητή βρόχου αξιολογείται κάθε φορά πριν από την εκτέλεση του τμήματος εκτέλεσης.
  • Το μπλοκ εκτέλεσης περιέχει όλο τον κώδικα που χρειάζεται να εκτελεστεί και μπορεί να περιέχει οποιαδήποτε εκτελέσιμη εντολή.
  • Η μεταβλητή loop_variable δηλώνεται έμμεσα κατά την εκτέλεση του βρόχου και το πεδίο εφαρμογής της βρίσκεται μόνο εντός του βρόχου.
  • Όταν η μεταβλητή βρόχου μετακινηθεί εκτός εύρους, ο έλεγχος τερματίζει τον βρόχο.
  • Ο βρόχος μπορεί να ρυθμιστεί ώστε να λειτουργεί με αντίστροφη σειρά προσθέτοντας τη λέξη-κλειδί 'REVERSE' πριν από το lower_limit.

Παράδειγμα 1: Σε αυτό το παράδειγμα, τυπώνουμε αριθμούς από το 1 έως το 5 χρησιμοποιώντας μια εντολή βρόχου FOR.

ΓΙΑ εκτύπωση βρόχου αριθμών 1 έως 5

BEGIN
dbms_output.put_line('Program started.');
FOR a IN 1 .. 5
LOOP
dbms_output.put_line(a);
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Code Επεξήγηση:

  • Code γραμμή 2: Εκτύπωση της δήλωσης «Το πρόγραμμα ξεκίνησε».
  • Code γραμμή 3: Η λέξη-κλειδί 'FOR' σηματοδοτεί την αρχή του βρόχου και δηλώνεται η μεταβλητή_loop 'a'. Πλέον λαμβάνει τιμές από 1 έως 5.
  • Code γραμμή 5: Εκτυπώνει την τιμή του 'a'.
  • Code γραμμή 6: Η λέξη-κλειδί «ΤΕΛΟΣ ΒΡΟΧΟΥ» σηματοδοτεί το τέλος του μπλοκ εκτέλεσης.
  • Η γραμμή 5 συνεχίζει να εκτελείται μέχρι το 'a' να φτάσει την τιμή 6, οπότε η συνθήκη αποτυγχάνει και ο έλεγχος τερματίζει τον βρόχο.
  • Code γραμμή 7: Εκτύπωση της δήλωσης «Το πρόγραμμα ολοκληρώθηκε».

Ένθετοι βρόχοι

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

Δομή ένθετου βρόχου

LOOP --outer
<execution block starts>
LOOP --inner
<execution_part>
END LOOP;
<execution_block_ends>
END LOOP;

Επεξήγηση σύνταξης:

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

Παράδειγμα 1: Σε αυτό το παράδειγμα, εκτυπώνουμε αριθμούς από το 1 έως το 3 χρησιμοποιώντας μια εντολή βρόχου FOR. Κάθε αριθμός εκτυπώνεται τόσες φορές όσες είναι και η τιμή του.

Παράδειγμα ενσωματωμένου βρόχου FOR μέρος 1

Παράδειγμα ενσωματωμένου βρόχου FOR μέρος 2

DECLARE
b NUMBER;
BEGIN
dbms_output.put_line('Program started');
FOR a IN 1..3
LOOP
b:= 1;
WHILE (a>=b)
LOOP
dbms_output.put_line(a);
b:= b+1;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed');
END;
/

Code Επεξήγηση:

  • Code γραμμή 2: Δηλώνοντας τη μεταβλητή 'b' ως τύπο δεδομένων 'NUMBER'.
  • Code γραμμή 4: Εκτύπωση της δήλωσης «Το πρόγραμμα ξεκίνησε».
  • Code γραμμή 5: Η λέξη-κλειδί 'FOR' σηματοδοτεί την αρχή του βρόχου και δηλώνεται η μεταβλητή_loop 'a'. Πλέον λαμβάνει τιμές από 1 έως 3.
  • Code γραμμή 7: Επαναφορά της τιμής του 'b' στο '1' κάθε φορά.
  • Code γραμμή 8: Το εσωτερικό ενώ βρόχος ελέγχει για την συνθήκη a>=b.
  • Code γραμμή 10: Εκτυπώνει την τιμή του 'a' εφόσον πληρούται η παραπάνω συνθήκη.
  • Code γραμμή 14: Εκτύπωση της δήλωσης «Το πρόγραμμα ολοκληρώθηκε».

Βρόχος ΓΙΑ και Βρόχος ΑΝΤΙΣΤΡΟΦΗΣ ΓΙΑ

Από προεπιλογή, ένας βρόχος FOR μετράει προς τα πάνω από το κατώτερο όριο στο ανώτερο όριο. Η προσθήκη της λέξης-κλειδιού REVERSE τον μετράει προς τα κάτω ενώ διατηρείτεping τα όρια με την ίδια σειρά. Και οι δύο μορφές εμφανίζονται μαζί παρακάτω, ώστε η διαφορά να είναι σαφής.

Μορφή επικεφαλίδα Σειρά τιμών
Αύξουσα ΓΙΑ ΕΝΑ ΣΕ 1 .. 5 1, 2, 3, 4, 5
Φθίνουσα ΓΙΑ ΑΝΤΙΣΤΡΟΦΗ 1 .. 5 5, 4, 3, 2, 1

Σημειώστε ότι ακόμη και με το REVERSE, το κατώτερο όριο εξακολουθεί να γράφεται πριν από το ανώτερο όριο. Μόνο η κατεύθυνση της επανάληψης αλλάζει. Για βρόχους των οποίων ο αριθμός δεν είναι γνωστός εκ των προτέρων, το βασικός βρόχος είναι η καλύτερη επιλογή.

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

Όχι. Ο βρόχος FOR δηλώνει τη μεταβλητή του έμμεσα και υπάρχει μόνο μέσα στον βρόχο. Η δήλωση μιας μεταβλητής με το ίδιο όνομα εκτός δεν επηρεάζει αυτήν που χρησιμοποιείται από τον βρόχο.

Η εντολή REVERSE επαναλαμβάνει τον βρόχο από το υψηλότερο όριο προς τα κάτω. Τα όρια εξακολουθούν να γράφονται από χαμηλό σε υψηλό. Μόνο η σειρά με την οποία επισκέπτονται οι τιμές αντιστρέφεται.

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

Ναι, όταν ο βασικός βρόχος απλώς μετράει μεταξύ δύο σταθερών τιμών. Η Τεχνητή Νοημοσύνη μπορεί να αντικαταστήσει τον χειροκίνητο μετρητή και την ΕΞΟΔΟ με ένα εύρος ΓΙΑ, καθιστώντας τον κώδικα πιο σύντομο. Επιβεβαιώστε ότι τα όρια ταιριάζουν με το αρχικό.

Όχι. Η μεταβλητή βρόχου είναι μόνο για ανάγνωση μέσα στον βρόχο, επομένως μια ανάθεση σε αυτήν προκαλεί σφάλμα μεταγλώττισης. Για να αλλάξετε τη ροή, χρησιμοποιήστε μια ξεχωριστή μεταβλητή ή τερματίστε τον βρόχο με EXIT.

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