Oracle PL/SQL FOR LOOP με Παράδειγμα
Τι είναι το For Loop;
Η δήλωση "FOR LOOP" είναι η καταλληλότερη όταν θέλετε να εκτελέσετε έναν κώδικα για έναν γνωστό αριθμό φορών αντί να βασίζεται σε κάποιες άλλες συνθήκες.
Σε αυτόν τον βρόχο, θα καθοριστεί το κατώτερο όριο και το υψηλότερο όριο και όσο η μεταβλητή βρόχου βρίσκεται μεταξύ αυτού του εύρους, ο βρόχος θα εκτελείται.
Η μεταβλητή βρόχου είναι αυτοαυξητική, επομένως δεν απαιτείται ρητή λειτουργία αύξησης σε αυτόν τον βρόχο. Η μεταβλητή βρόχου δεν χρειάζεται να δηλωθεί, όπως δηλώνεται σιωπηρά.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Επεξήγηση σύνταξης:
- Στην παραπάνω σύνταξη, η λέξη-κλειδί 'FOR' σηματοδοτεί την αρχή του βρόχου και το 'END LOOP' το τέλος του βρόχου.
- Η μεταβλητή βρόχου αξιολογείται κάθε φορά πριν από την εκτέλεση του τμήματος εκτέλεσης.
- Το μπλοκ εκτέλεσης περιέχει όλο τον κώδικα που πρέπει να εκτελεστεί. Το τμήμα εκτέλεσης μπορεί να περιέχει οποιαδήποτε δήλωση εκτέλεσης.
- Το loop_variable δηλώνεται σιωπηρά κατά την εκτέλεση ολόκληρου του βρόχου και το εύρος αυτού του loop_variable θα είναι μόνο μέσα σε αυτόν τον βρόχο.
- Εάν η μεταβλητή βρόχου βγήκε από το εύρος, τότε ο έλεγχος θα βγει από τον βρόχο.
- Ο βρόχος μπορεί να λειτουργήσει με την αντίστροφη σειρά προσθέτοντας τη λέξη-κλειδί 'REVERSE' πριν από το low_limit.
Παράδειγμα 1: Σε αυτό το παράδειγμα, πρόκειται να εκτυπώσουμε τον αριθμό από το 1 έως το 5 χρησιμοποιώντας τη δήλωση βρόχου FOR. Για αυτό, θα εκτελέσουμε τον παρακάτω κώδικα.
BEGIN dbms Qutput.put linef.Prp.gram started.' ); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP: dbms_output.put_iine('Program completed.'); END; /
Επεξήγηση κώδικα:
- Κωδικός γραμμή 2: Εκτύπωση της δήλωσης «Το πρόγραμμα ξεκίνησε».
- Κωδικός γραμμή 3: Η λέξη-κλειδί 'FOR' σηματοδοτεί την αρχή του βρόχου και η μεταβλητή_loop δηλώνεται 'a'. Τώρα θα έχει την τιμή που ξεκινά από το 1 έως το 5
- Κωδικός γραμμή 5: Εκτυπώνει την τιμή του 'a'.
- Κωδικός γραμμή 6: Η λέξη-κλειδί 'END LOOP' σηματοδοτεί το τέλος του μπλοκ εκτέλεσης.
- Ο κώδικας από τη γραμμή 5 θα συνεχίσει να εκτελείται έως ότου το 'a' φτάσει την τιμή 6, καθώς η συνθήκη θα αποτύχει και το στοιχείο ελέγχου θα EXIT από τον βρόχο.
- Κωδικός γραμμή 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; /
Επεξήγηση κώδικα:
- Κωδικός γραμμή 2: Δήλωση της μεταβλητής 'b' ως τύπου δεδομένων 'NUMBER'.
- Κωδικός γραμμή 4: Εκτύπωση της δήλωσης «Το πρόγραμμα ξεκίνησε».
- Κωδικός γραμμή 5: Η λέξη-κλειδί 'FOR' σηματοδοτεί την αρχή του βρόχου και η μεταβλητή_loop δηλώνεται 'a'. Τώρα θα έχει την τιμή που ξεκινά από το 1 έως το 3
- Κωδικός γραμμή 7: Επαναφορά της τιμής του 'b' στο '1' κάθε φορά.
- Κωδικός γραμμή 8: Εσωτερικός ενώ βρόχος ελέγχει για την συνθήκη a>=b.
- Κωδικός γραμμή 10: Εκτυπώνει την τιμή του 'a' εφόσον πληρούται η παραπάνω συνθήκη.
- Κωδικός γραμμή 14: Εκτύπωση της δήλωσης «Το πρόγραμμα ολοκληρώθηκε»
Σύνοψη
Βρόχος | FOR Loop |
---|---|
Κριτήρια ΕΞΟΔΟΥ | Βγείτε όταν ο μετρητής φτάσει στο όριο |
Χρήση | Είναι καλό να χρησιμοποιείται όταν είναι γνωστός ο αριθμός βρόχων που θα εκτελεστεί. |