Oracle PL / SQL Cursor: Implicit, Explicit, Cursor FOR Loop (Παράδειγμα)

Πίνακας περιεχομένων:

Anonim

Τι είναι το CURSOR στο PL / SQL;

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

Το PL / SQL επιτρέπει στον προγραμματιστή να ελέγχει την περιοχή περιβάλλοντος μέσω του δρομέα. Ένας δρομέας κρατά τις σειρές που επιστρέφονται από τη δήλωση SQL. Το σύνολο γραμμών που κρατά ο δρομέας αναφέρεται ως ενεργό σύνολο. Αυτοί οι δρομείς μπορούν επίσης να ονομάζονται έτσι ώστε να μπορούν να αναφέρονται από άλλο μέρος του κώδικα.

Σε αυτό το σεμινάριο θα μάθετε-

  • Σιωπηρός δρομέας
  • Ρητός δρομέας
  • Χαρακτηριστικά του δρομέα
  • Για δήλωση δρομέα βρόχου

Ο δρομέας είναι δύο τύπων.

  • Σιωπηρός δρομέας
  • Ρητός δρομέας

Σιωπηρός δρομέας

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

Ρητός δρομέας

Επιτρέπεται στους προγραμματιστές να δημιουργήσουν μια ονομαστική περιοχή περιβάλλοντος για να εκτελέσουν τις λειτουργίες DML τους για να αποκτήσουν μεγαλύτερο έλεγχο σε αυτήν. Ο ρητός δρομέας πρέπει να οριστεί στην ενότητα δήλωσης του μπλοκ PL / SQL και δημιουργείται για τη δήλωση «SELECT» που πρέπει να χρησιμοποιηθεί στον κώδικα.

Ακολουθούν βήματα που σχετίζονται με την εργασία με ρητούς δρομείς.

  • Δήλωση του δρομέα

    Η δήλωση του δρομέα σημαίνει απλώς τη δημιουργία μιας ονομασμένης περιοχής περιβάλλοντος για τη δήλωση «SELECT» που ορίζεται στο τμήμα δήλωσης. Το όνομα αυτής της περιοχής περιβάλλοντος είναι ίδιο με το όνομα του δρομέα.

  • Άνοιγμα δρομέα

    Το άνοιγμα του δρομέα θα δώσει εντολή στο PL / SQL να εκχωρήσει τη μνήμη για αυτόν τον δρομέα. Θα κάνει τον κέρσορα έτοιμο να πάρει τις εγγραφές.

  • Λήψη δεδομένων από τον Δρομέα

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

    Κάθε δήλωση ανάκτησης θα πάρει ένα ενεργό σύνολο και διατηρεί τις πληροφορίες αυτής της συγκεκριμένης εγγραφής. Αυτή η δήλωση είναι ίδια με τη δήλωση «SELECT» που ανακτά την εγγραφή και εκχωρεί στη μεταβλητή στον όρο «INTO», αλλά δεν θα ρίξει εξαιρέσεις.

  • Κλείσιμο του δρομέα

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

Σύνταξη:

DECLARECURSOR  IS ;BEGINFOR I IN LOOP… END LOOP;END;
  • Στην παραπάνω σύνταξη, το τμήμα δήλωσης περιέχει τη δήλωση του δρομέα.
  • Ο δρομέας δημιουργείται για τη δήλωση «SELECT» που δίνεται στη δήλωση δρομέα.
  • Στο τμήμα εκτέλεσης, ο δηλωμένος δρομέας έχει ρυθμιστεί στο βρόχο FOR και η μεταβλητή βρόχου «I» θα συμπεριφέρεται ως μεταβλητή δρομέα σε αυτήν την περίπτωση.

Παράδειγμα 1 : Σε αυτό το παράδειγμα, θα προβάλλουμε όλο το όνομα του υπαλλήλου από τον πίνακα emp χρησιμοποιώντας έναν βρόχο κέρσορα-ΓΙΑ.

DECLARECURSOR guru99_det IS SELECT emp_name FROM emp;BEGINFOR lv_emp_name IN guru99_detLOOPDbms_output.put_line(‘Employee Fetched:‘||lv_emp_name.emp_name);END LOOP;END;/

Παραγωγή

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY

Επεξήγηση κώδικα:

  • Γραμμή κώδικα 2 : Δήλωση του δρομέα guru99_det για δήλωση «SELECT emp_name FROM emp».
  • Γραμμή κώδικα 4 : Κατασκευή του βρόχου «FOR» για τον κέρσορα με τη μεταβλητή βρόχου lv_emp_name.
  • Γραμμή κώδικα 5: Εκτύπωση του ονόματος εργαζομένου σε κάθε επανάληψη του βρόχου.
  • Γραμμή κώδικα 8: Έξοδος από το βρόχο

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