Μπλοκ PL/SQL: Δομή, Σύνταξη & Ανώνυμο Παράδειγμα

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

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

  • 🧱 Βασική ιδέα: Code ομαδοποιείται σε ένα μπλοκ που εκτελείται ως σύνολο, συνδυάζοντας διαδικαστική λογική με SQL.
  • 📝 Τμήμα Δήλωσης: Προαιρετικό· δηλώνει μεταβλητές, δρομείς, εξαιρέσεις και υποπρογράμματα που χρησιμοποιούνται στο μπλοκ.
  • ▶ ️ Ενότητα Εκτέλεσης: Υποχρεωτικό· ξεκινά με BEGIN και περιέχει τουλάχιστον μία εκτελέσιμη εντολή.
  • Ενότητα Εξαίρεσης: Προαιρετικό· ξεκινά με ΕΞΑΙΡΕΣΗ και χειρίζεται σφάλματα χρόνου εκτέλεσης.
  • 🏷️ Δύο Τύποι: Τα ανώνυμα μπλοκ δεν έχουν όνομα και εκτελούνται μία φορά, ενώ τα επώνυμα μπλοκ αποθηκεύονται ως αντικείμενα βάσης δεδομένων.
  • 🔁 Ονομασμένα μπλοκ: Οι διαδικασίες και οι συναρτήσεις είναι ονομασμένα μπλοκ που μπορούν να κληθούν επανειλημμένα.
  • Τελειωτής: Το END κλείνει το μπλοκ και μια κάθετος το στέλνει στον μεταγλωττιστή.

Δομή και Σύνταξη Μπλοκ PL/SQL

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

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

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

Δομή μπλοκ

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

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

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

Ενότητες μπλοκ PL/SQL και σειρά

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

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

  • Αυτή η ενότητα είναι προαιρετική και μπορεί να παραλειφθεί εάν δεν απαιτούνται δηλώσεις.
  • Θα πρέπει να είναι η πρώτη ενότητα σε ένα μπλοκ PL/SQL, εάν υπάρχει.
  • Ξεκινά με τη λέξη-κλειδί 'DECLARE' για εναύσματα και ανώνυμα μπλοκ. Για άλλα υποπρογράμματα, αυτή η λέξη-κλειδί δεν υπάρχει. Αντίθετα, το μέρος μετά το όνομα του υποπρογράμματος σηματοδοτεί την ενότητα δήλωσης.
  • Θα πρέπει πάντα να ακολουθείται από το τμήμα εκτέλεσης.

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

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

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

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

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

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

Η λέξη-κλειδί «ΤΕΛΟΣ» σηματοδοτεί το τέλος του μπλοκ 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. Επώνυμα μπλοκ

Τα δύο συγκρίνονται με μια ματιά παρακάτω πριν περιγραφεί το καθένα.

Άποψη Ανώνυμο μπλοκ Ονομασμένο μπλοκ
Έχει ένα όνομα Οχι Ναι
Αποθηκεύτηκε στη βάση δεδομένων Οχι Ναι, ως αντικείμενο
Ξεκινάει με ΔΗΛΩΣΗ ή ΕΝΑΡΞΗ ΔΗΜΙΟΥΡΓΩ
Επαναχρησιμοποιούμενες Μόνο στην ίδια συνεδρία Δυνατότητα κλήσης οποιαδήποτε στιγμή

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

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

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

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

Με όνομα Blocks

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

  • Αυτά τα μπλοκ μπορούν να κληθούν από άλλα μπλοκ.
  • Η δομή μπλοκ είναι η ίδια με ένα ανώνυμο μπλοκ, εκτός από το ότι δεν ξεκινά ποτέ με 'DECLARE'. Αντίθετα, ξεκινά με 'CREATE', το οποίο δίνει εντολή στον μεταγλωττιστή να το δημιουργήσει ως αντικείμενο βάσης δεδομένων.
  • Αυτά τα μπλοκ μπορούν να είναι ένθετα μέσα σε άλλα μπλοκ και μπορούν επίσης να περιέχουν ένθετα μπλοκ.
  • Τα επώνυμα μπλοκ είναι βασικά δύο τύπων:
  1. Διαδικασία
  2. Λειτουργία

Μπορείτε να μάθετε περισσότερα σχετικά με αυτά τα ονομασμένα μπλοκ στον οδηγό για διαδικασίες και λειτουργίες.

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

Μόνο η ενότητα εκτέλεσης, η οποία ξεκινά με BEGIN και τελειώνει με END. Οι ενότητες δήλωσης και χειρισμού εξαιρέσεων είναι προαιρετικές και μπορούν να παραλειφθούν εάν δεν είναι απαραίτητες.

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

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

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

Ναι. Οι ενότητες δήλωσης και εξαίρεσης είναι ανεξάρτητες επιλογές. Ένα μπλοκ μπορεί να ξεκινά από την BEGIN, να παραλείπει τις δηλώσεις και να περιλαμβάνει μια ενότητα EXCEPTION πριν από την END για τον εντοπισμό σφαλμάτων χρόνου εκτέλεσης.

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