PL/ SQL Block: ΔΟΜΗ, Σύνταξη, ΑΝΩΝΥΜΟ Παράδειγμα

Τι είναι το μπλοκ PL/SQL;

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

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

Δομή μπλοκ

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

  1. Ενότητα δήλωσης
  2. Ενότητα εκτέλεσης
  3. Εξαίρεση-Ενότητα χειρισμού

Η παρακάτω εικόνα απεικονίζει το διαφορετικό μπλοκ PL/SQL και τη σειρά τομών τους.

Δομή μπλοκ

Τμήμα δήλωσης

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

  • Αυτή η συγκεκριμένη ενότητα είναι προαιρετική και μπορεί να παραλειφθεί εάν δεν απαιτούνται δηλώσεις.
  • Αυτή θα πρέπει να είναι η πρώτη ενότητα σε ένα μπλοκ PL/SQL, εάν υπάρχει.
  • Αυτή η ενότητα ξεκινά με τη λέξη-κλειδί «ΔΗΛΩΣΗ» για ενεργοποιητές και ανώνυμο αποκλεισμό. Για άλλα υποπρογράμματα, αυτή η λέξη-κλειδί δεν θα υπάρχει. Αντίθετα, το τμήμα μετά τον ορισμό του ονόματος υποπρογράμματος επισημαίνει την ενότητα δήλωσης.
  • Αυτή η ενότητα θα πρέπει πάντα να ακολουθείται από την ενότητα εκτέλεσης.

Τμήμα εκτέλεσης

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

  • Αυτό μπορεί να περιέχει κώδικα PL/SQL και κώδικα SQL.
  • Αυτό μπορεί να περιέχει ένα ή πολλά μπλοκ μέσα του ως ένθετο μπλοκ.
  • Αυτή η ενότητα ξεκινά με τη λέξη-κλειδί «ΑΡΧΗ».
  • Αυτή η ενότητα θα πρέπει να ακολουθείται είτε από την ενότητα "ΤΕΛΟΣ" είτε από την ενότητα Εξαίρεση-Χειρισμός (εάν υπάρχει)

Τμήμα Εξαίρεσης-Χειρισμού

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

  • Αυτή είναι η ενότητα όπου γίνεται ο χειρισμός της εξαίρεσης που τίθεται στο μπλοκ εκτέλεσης.
  • Αυτή η ενότητα είναι το τελευταίο μέρος του μπλοκ PL/SQL.
  • Ο έλεγχος από αυτήν την ενότητα δεν μπορεί ποτέ να επιστρέψει στο μπλοκ εκτέλεσης.
  • Αυτή η ενότητα ξεκινά με τη λέξη-κλειδί "EXCEPTION".
  • Αυτή η ενότητα θα πρέπει πάντα να ακολουθείται από τη λέξη-κλειδί «ΤΕΛΟΣ».

Η λέξη-κλειδί «END» σηματοδοτεί το τέλος του μπλοκ PL/SQL.

Σύνταξη μπλοκ PL/SQL

Παρακάτω είναι η σύνταξη της δομής μπλοκ PL/SQL.

Σύνταξη μπλοκ PL/SQL

DECLARE --optional
    <declarations>

BEGIN   --mandatory
    <executable statements. At least one executable statement is mandatory>

EXCEPTION --optional 
    <exception handles>

END;   --mandatory
/

Σημείωση: Ένα μπλοκ πρέπει πάντα να ακολουθείται από το '/' που στέλνει τις πληροφορίες στον μεταγλωττιστή σχετικά με το τέλος του μπλοκ.

Τύποι μπλοκ PL/SQL

Τα μπλοκ PL/SQL είναι κυρίως δύο τύπων.

  1. Ανώνυμα μπλοκ
  2. Με όνομα Blocks

Ανώνυμα μπλοκ

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

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

Παρακάτω είναι μερικά ακόμη χαρακτηριστικά των ανώνυμων μπλοκ.

  • Αυτά τα μπλοκ δεν έχουν κάποιο όνομα αναφοράς που έχει καθοριστεί για αυτά.
  • Αυτά τα μπλοκ ξεκινούν με τη λέξη-κλειδί "ΔΗΛΩΣΗ" ή "ΑΡΧΗ".
  • Δεδομένου ότι αυτά τα μπλοκ δεν έχουν όνομα αναφοράς, δεν μπορούν να αποθηκευτούν για μεταγενέστερο σκοπό. Θα δημιουργηθούν και θα εκτελεστούν στην ίδια συνεδρία.
  • Μπορούν να καλέσουν τα άλλα μπλοκ με όνομα, αλλά η κλήση σε ανώνυμο μπλοκ δεν είναι δυνατή καθώς δεν έχει καμία αναφορά.
  • Μπορεί να έχει ένθετο μπλοκ μέσα σε αυτό που μπορεί να ονομαστεί ή ανώνυμο. Μπορεί επίσης να είναι ένθετο σε οποιοδήποτε μπλοκ.
  • Αυτά τα μπλοκ μπορούν να έχουν και τα τρία τμήματα του μπλοκ, στα οποία η ενότητα εκτέλεσης είναι υποχρεωτική, ενώ οι άλλες δύο ενότητες είναι προαιρετικές.

Επώνυμα μπλοκ

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

Παρακάτω είναι μερικά ακόμη χαρακτηριστικά των μπλοκ με όνομα.

  • Αυτά τα μπλοκ μπορούν να κληθούν από άλλα μπλοκ.
  • Η δομή του μπλοκ είναι ίδια με ένα ανώνυμο μπλοκ, με τη διαφορά ότι δεν θα ξεκινά ποτέ με τη λέξη-κλειδί «ΔΗΛΩΣΗ». Αντίθετα, θα ξεκινά με τη λέξη-κλειδί «ΔΗΜΙΟΥΡΓΙΑ» που δίνει εντολή στον μεταγλωττιστή να το δημιουργήσει ως αντικείμενο βάσης δεδομένων.
  • Αυτά τα μπλοκ μπορούν να είναι ένθετα μέσα σε άλλα μπλοκ. Μπορεί επίσης να περιέχει ένθετα μπλοκ.
  • Τα επώνυμα μπλοκ είναι βασικά δύο τύπων:
  1. Διαδικασία
  2. Λειτουργία

Θα μάθουμε περισσότερα για αυτά τα ονομασμένα μπλοκ στα θέματα «Διαδικασία» και «Λειτουργία» σε επόμενο σεμινάριο.

Περίληψη

Μετά από αυτό το σεμινάριο, θα πρέπει να γνωρίζετε τα μπλοκ PL/SQL και τους τύπους τους, τις διάφορες ενότητες μπλοκ και τις χρήσεις τους. Η λεπτομερής περιγραφή των ονομαζόμενων μπλοκ PL/SQL θα καλυφθεί στο επόμενο σεμινάριο.