Διαφορά μεταξύ ρητού δρομέα και σιωπηρού δρομέα

Διαφορά μεταξύ ρητού δρομέα και σιωπηρού δρομέα
Διαφορά μεταξύ ρητού δρομέα και σιωπηρού δρομέα

Βίντεο: Διαφορά μεταξύ ρητού δρομέα και σιωπηρού δρομέα

Βίντεο: Διαφορά μεταξύ ρητού δρομέα και σιωπηρού δρομέα
Βίντεο: Tethered 2024, Νοέμβριος
Anonim

Ρητό δρομέα εναντίον σιωπηρού δρομέα

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

Τι είναι ο σιωπηρός δρομέας;

Οι σιωπηροί δρομείς δημιουργούνται αυτόματα και χρησιμοποιούνται από την Oracle κάθε φορά που εκδίδεται μια δήλωση επιλογής. Εάν χρησιμοποιείται σιωπηρός δρομέας, το Σύστημα Διαχείρισης Βάσεων Δεδομένων (DBMS) θα εκτελέσει αυτόματα τις λειτουργίες ανοίγματος, ανάκτησης και κλεισίματος. Οι σιωπηροί δρομείς θα πρέπει να χρησιμοποιούνται μόνο με εντολές SQL που επιστρέφουν μία μόνο σειρά. Εάν η πρόταση SQL επιστρέφει περισσότερες από μία γραμμές, η χρήση ενός σιωπηρού δρομέα θα εισάγει ένα σφάλμα. Ένας σιωπηρός δρομέας συσχετίζεται αυτόματα με κάθε δήλωση Γλώσσας χειρισμού δεδομένων (DML), δηλαδή δηλώσεις INSERT, UPDATE και DELETE. Επίσης, ένας σιωπηρός δρομέας χρησιμοποιείται για την επεξεργασία εντολών SELECT INTO. Κατά την ανάκτηση δεδομένων με χρήση σιωπηρών δρομέων, η εξαίρεση NO_DATA_FOUND μπορεί να αυξηθεί όταν η πρόταση SQL δεν επιστρέφει δεδομένα. Επιπλέον, οι σιωπηροί δρομείς μπορούν να αυξήσουν TOO_MANY_ROWS εξαιρέσεις όταν η πρόταση SQL επιστρέφει περισσότερες από μία σειρές.

Τι είναι το Explicit Cursor;

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

Διαφορά μεταξύ ρητού δρομέα και σιωπηρού δρομέα

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

Συνιστάται: