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

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

Οι βρόχοι PL/SQL εκτελούν ένα τμήμα κώδικα επανειλημμένα για έναν επιθυμητό αριθμό φορών. Η PL/SQL προσφέρει βασικούς βρόχους, βρόχους FOR και βρόχους WHILE, που ελέγχονται από τα CONTINUE, EXIT, EXIT WHEN και GOTO, και οι βρόχοι μπορούν να επισημανθούν για την καθαρή διαχείριση των ενσωματωμένων δομών.

  • 🔁 Σκοπός: Ένας βρόχος εκτελεί ένα μπλοκ κώδικα πολλές φορές, μειώνοντας το μέγεθος και την πολυπλοκότητα του κώδικα.
  • 🧭 Μετρητής βρόχου: Μια μεταβλητή μετρητή αποφασίζει την συνθήκη του βρόχου και πρέπει να αλλάξει ώστε να είναι δυνατή η έξοδος από τον βρόχο.
  • ⏭️ ΣΥΝΕΧΙΖΩ: Παραλείπει το υπόλοιπο της τρέχουσας επανάληψης και ξεκινά την επόμενη.
  • 🚪 ΕΞΟΔΟΣ / ΕΞΟΔΟΣ ΟΤΑΝ: Εγκαταλείπει αμέσως τον βρόχο, προαιρετικά όταν μια λογική συνθήκη είναι αληθής.
  • 🏷️ Ετικέτες: Μια ετικέτα βρόχου ανάμεσα σε διπλές γωνιακές αγκύλες επιτρέπει στο EXIT να στοχεύσει έναν εξωτερικό βρόχο.
  • ♾️ Βασικός βρόχος: Εκτελείται μέχρι να επιτευχθεί μια σαφής ΕΞΟΔΟΣ. Χωρίς αυτήν, επαναλαμβάνεται για πάντα.
  • 🧩 Τρεις τύποι: Ο βασικός βρόχος, ο βρόχος FOR και ο βρόχος WHILE καλύπτουν τα κοινά μοτίβα.

Oracle Βρόχος PL/SQL

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

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

Εισαγωγή στην έννοια των βρόχων

Η έννοια των βρόχων παρέχει τα ακόλουθα πλεονεκτήματα στην κωδικοποίηση:

  • Επαναχρησιμοποίηση κώδικα.
  • Μειωμένο μέγεθος κώδικα.
  • Εύκολη ροή ελέγχου.
  • Μειωμένη πολυπλοκότητα.

Το παρακάτω διάγραμμα δείχνει την τουαλέταping έννοια.

Τουαλέταping ροή εννοιών σε PL/SQL

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

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

Δηλώσεις ελέγχου βρόχου

Πριν μάθετε την έννοια των βρόχων, είναι σημαντικό να μάθετε τις εντολές ελέγχου βρόχου. Αυτές οι εντολές ελέγχουν τη ροή εκτέλεσης μέσα σε έναν βρόχο.

ΣΥΝΕΧΕΙΑ

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

ΕΞΟΔΟΣ / ΕΞΟΔΟΣ ΟΤΑΝ

Αυτή η λέξη-κλειδί δίνει εντολή στη μηχανή PL/SQL να τερματίσει αμέσως τον τρέχοντα βρόχο. Σε έναν ένθετο βρόχο, η συνάρτηση EXIT στον εσωτερικό βρόχο τερματίζει μόνο τον εσωτερικό βρόχο, όχι τον εξωτερικό βρόχο. Η συνάρτηση 'EXIT WHEN' ακολουθείται από μια παράσταση που δίνει ένα λογικό αποτέλεσμα. Εάν το αποτέλεσμα είναι TRUE, ο έλεγχος τερματίζεται.

GOTO

Αυτή η εντολή μεταφέρει τον έλεγχο σε μια εντολή με ετικέτα ("GOTO ;"). Έχει τους ακόλουθους περιορισμούς:

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

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

Τύποι βρόχου σε PL/SQL

PL / SQL παρέχει τους ακόλουθους τρεις τύπους βρόχων:

Ο παρακάτω πίνακας αντιπαραβάλλει τα τρία προτού καλυφθεί λεπτομερώς ο βασικός βρόχος.

Βρόχος Κριτήρια εξόδου καλύτερα χρησιμοποιείται όταν
Βασικός βρόχος Ρητή ΈΞΟΔΟΣ στο τετράγωνο Η έξοδος δεν βασίζεται σε σταθερό αριθμό ή συνθήκη
βρόχος ΓΙΑ Ο μετρητής φτάνει στο τέλος του εύρους του Ο αριθμός των επαναλήψεων είναι γνωστός εκ των προτέρων
βρόχος WHILE Η συνθήκη γίνεται ψευδής Ο βρόχος θα πρέπει να εκτελείται όσο ισχύει μια συνθήκη

Βασική δήλωση βρόχου

Αυτή είναι η απλούστερη δομή βρόχου στην PL/SQL. Το μπλοκ εκτέλεσης ξεκινά με τη λέξη-κλειδί 'LOOP' και τελειώνει με 'END LOOP'. Η συνθήκη εξόδου θα πρέπει να δίνεται μέσα στο μπλοκ εκτέλεσης, έτσι ώστε ο έλεγχος να τερματίζει τον βρόχο, και η λέξη-κλειδί EXIT πρέπει να δίνεται ρητά.

Βασική δομή βρόχου σε PL/SQL

LOOP
<execution block starts>
<EXIT condition based on developer criteria>
<execution_block_ends>
END LOOP;

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

  • Η λέξη-κλειδί «LOOP» (ΒΡΟΧΟΣ) σηματοδοτεί την αρχή του βρόχου και η λέξη-κλειδί «END LOOP» σηματοδοτεί το τέλος.
  • Το μπλοκ εκτέλεσης περιέχει όλο τον κώδικα που πρέπει να εκτελεστεί, συμπεριλαμβανομένης της συνθήκης EXIT.
  • Το τμήμα εκτέλεσης μπορεί να περιέχει οποιαδήποτε εκτελέσιμη εντολή.

Σημείωση: Μια βασική εντολή βρόχου χωρίς λέξη-κλειδί EXIT είναι ένας ατέρμονος βρόχος που δεν σταματά ποτέ.

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

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

DECLARE
a NUMBER:= 1;
BEGIN
dbms_output.put_line('Program started.');
LOOP
dbms_output.put_line(a);
a:= a+1;
EXIT WHEN a>5;
END LOOP;
dbms_output.put_line('Program completed');
END;
/

Code Επεξήγηση:

  • Code γραμμή 2: Δηλώνοντας τη μεταβλητή 'a' ως 'NUMBER' και αρχικοποιώντας την με την τιμή '1'.
  • Code γραμμή 4: Εκτύπωση της δήλωσης «Το πρόγραμμα ξεκίνησε».
  • Code γραμμή 5: Η λέξη-κλειδί «LOOP» (ΒΡΟΧΟΣ) σηματοδοτεί την αρχή του βρόχου.
  • Code γραμμή 6: Εκτυπώνει την τιμή του 'a'.
  • Code γραμμή 7: Αυξάνει την τιμή του 'a' κατά 1.
  • Code γραμμή 8: Ελέγχει εάν η τιμή του 'a' είναι μεγαλύτερη από 5.
  • Code γραμμή 9: Η λέξη-κλειδί «ΤΕΛΟΣ ΒΡΟΧΟΥ» σηματοδοτεί το τέλος του μπλοκ εκτέλεσης.
  • Οι γραμμές 6 έως 8 συνεχίζουν να εκτελούνται μέχρι το 'a' να φτάσει στο 6, οπότε η συνθήκη επιστρέφει TRUE και ο έλεγχος τερματίζει τον βρόχο.
  • Code γραμμή 10: Εκτύπωση της δήλωσης «Το πρόγραμμα ολοκληρώθηκε».

Επισήμανση βρόχων

Στην PL/SQL, οι βρόχοι μπορούν να φέρουν ετικέτες. Η ετικέτα πρέπει να περικλείεται μεταξύ "<<" και ">>". Η επισήμανση των βρόχων, ιδιαίτερα σε ένθετους βρόχους, προσφέρει μεγαλύτερη αναγνωσιμότητα. Η ετικέτα μπορεί να δοθεί σε μια εντολή EXIT για έξοδο από αυτόν τον συγκεκριμένο βρόχο, επομένως ο έλεγχος μπορεί να εξέλθει από τον εξωτερικό βρόχο μιας ένθετης δομής απευθείας δίνοντας την εντολή EXIT ακολουθούμενη από την ετικέτα του εξωτερικού βρόχου.

Δομή βρόχου με ετικέτα

<<OUTER_LOOP>>
LOOP
<execution_block_starts>
.
<<INNER_LOOP>>
LOOP --inner
<execution_part>
END LOOP;
.
<execution_block_ends>
END LOOP;

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

  • Ο εξωτερικός βρόχος έχει έναν ακόμη βρόχο μέσα του.
  • '< >' και '< >' είναι οι ετικέτες αυτών των βρόχων.

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

Παράδειγμα βρόχου με ετικέτα μέρος 1Παράδειγμα βρόχου με ετικέτα μέρος 2

DECLARE
a NUMBER:= 0;
b NUMBER;
upper_limit NUMBER := 4;
BEGIN
dbms_output.put_line('Program started.');
<<outer_loop>>
LOOP
a:= a+1;
b:= 1;
<<inner_loop>>
LOOP
EXIT outer_loop WHEN a > upper_limit;
dbms_output.put_line(a);
b:= b+1;
EXIT inner_loop WHEN b>a;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Code Επεξήγηση:

  • Code γραμμή 2-3: Δηλώνοντας τις μεταβλητές 'a' και 'b' ως τύπο δεδομένων 'NUMBER'.
  • Code γραμμή 4: Δηλώνοντας τη μεταβλητή 'upper_limit' ως 'NUMBER' με τιμή '4'.
  • Code γραμμή 6: Εκτύπωση της δήλωσης «Το πρόγραμμα ξεκίνησε».
  • Code γραμμή 7: Ο εξωτερικός βρόχος φέρει την ετικέτα "outer_loop".
  • Code γραμμή 9: Η τιμή του 'a' αυξάνεται κατά 1.
  • Code γραμμή 11: Ο εσωτερικός βρόχος φέρει την ετικέτα "inner_loop".
  • Code γραμμή 13: Συνθήκη ΕΞΟΔΟΥ που ελέγχει εάν το 'a' είναι υψηλότερο από την τιμή 'upper_limit'. Εάν όχι, προχωρά παραπέρα, διαφορετικά εξέρχεται απευθείας από τον εξωτερικό βρόχο.
  • Code γραμμή 14: Εκτύπωση της τιμής του 'b'.
  • Code γραμμή 15: Αυξάνει την τιμή του 'b' κατά 1.
  • Code γραμμή 16: Συνθήκη ΕΞΟΔΟΥ που ελέγχει εάν το 'b' είναι υψηλότερο από το 'a'. Εάν ναι, τερματίζει τον εσωτερικό βρόχο.
  • Code γραμμή 19: Εκτύπωση της δήλωσης «Το πρόγραμμα ολοκληρώθηκε».

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

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

Μια ετικέτα επιτρέπει σε μια ΕΞΟΔΟ σε έναν εσωτερικό βρόχο να εγκαταλείψει έναν ονομασμένο εξωτερικό βρόχο σε ένα βήμα. Επίσης, κάνει τον ένθετο κώδικα πολύ πιο εύκολο στην ανάγνωση από ό,τι tracking plain END LOOP εντολές.

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

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

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

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