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

Τι είναι ένας βρόχος 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.
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. Κάθε αριθμός εκτυπώνεται τόσες φορές όσες είναι και η τιμή του.
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, το κατώτερο όριο εξακολουθεί να γράφεται πριν από το ανώτερο όριο. Μόνο η κατεύθυνση της επανάληψης αλλάζει. Για βρόχους των οποίων ο αριθμός δεν είναι γνωστός εκ των προτέρων, το βασικός βρόχος είναι η καλύτερη επιλογή.




