Τύπος εγγραφών Oracle PL / SQL με παραδείγματα

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

Anonim

Τι είναι ο τύπος εγγραφής;

Ένας τύπος εγγραφής είναι ένας σύνθετος τύπος δεδομένων που επιτρέπει στον προγραμματιστή να δημιουργήσει έναν νέο τύπο δεδομένων με την επιθυμητή δομή στήλης.

  • Ομαδοποιεί μία ή περισσότερες στήλες για να σχηματίσει έναν νέο τύπο δεδομένων
  • Αυτές οι στήλες θα έχουν το δικό τους όνομα και τον τύπο δεδομένων
  • Ένας τύπος εγγραφής μπορεί να δεχτεί τα δεδομένα
    • Ως μεμονωμένη εγγραφή που αποτελείται από πολλές στήλες Ή
    • Μπορεί να αποδεχτεί την τιμή για μια συγκεκριμένη στήλη μιας εγγραφής
  • Ο τύπος εγγραφής σημαίνει απλά έναν νέο τύπο δεδομένων. Μόλις δημιουργηθεί ο τύπος εγγραφής, θα αποθηκευτεί ως νέος τύπος δεδομένων στη βάση δεδομένων και ο ίδιος θα χρησιμοποιηθεί για να δηλώσει μια μεταβλητή στα προγράμματα.
  • Θα χρησιμοποιήσει τη λέξη-κλειδί «ΤΥΠΟΣ» για να δώσει οδηγίες στον μεταγλωττιστή ότι δημιουργεί τον νέο τύπο δεδομένων.
  • Μπορεί να δημιουργηθεί σε " επίπεδο βάσης δεδομένων" που μπορεί να αποθηκευτεί ως αντικείμενα βάσης δεδομένων, να χρησιμοποιηθεί σε όλη τη βάση δεδομένων ή να δημιουργηθεί στα " επίπεδα υποπρογράμματος" , τα οποία είναι ορατά μόνο μέσα στα υποπρογράμματα.
  • Ο τύπος εγγραφής επιπέδου βάσης δεδομένων μπορεί επίσης να δηλωθεί για τις στήλες πίνακα, έτσι ώστε μία στήλη να μπορεί να διατηρεί τα σύνθετα δεδομένα.
  • Τα δεδομένα σε αυτόν τον τύπο δεδομένων μπορούν να προσπελαστούν αναφέροντας το όνομα_μεταβλητών τους ακολουθούμενο από τον τελεστή περιόδου (.) Ακολουθούμενο από το όνομα_στοιχείου δηλ.

Σύνταξη για δήλωση σε επίπεδο βάσης δεδομένων:

CREATE TYPE  IS RECORD( ,);

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

Αυτό δίνεται ως μεμονωμένη δήλωση και όχι μέσα σε κανένα μπλοκ.

Σύνταξη για δήλωση σε επίπεδο υποπρογράμματος:

DECLARETYPE  IS RECORD( ,);BEGIN;END;

Στη σύνταξη, δημιουργούμε τον τύπο εγγραφής που ονομάζεται "type_name" μόνο μέσα στο υποπρόγραμμα.

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

Παράδειγμα 1: Πληκτρολογήστε RECORD ως αντικείμενο βάσης δεδομένων

Σε αυτό το πρόγραμμα, θα δούμε πώς να δημιουργήσουμε "Τύπος εγγραφής" ως αντικείμενο βάσης δεδομένων. Θα δημιουργήσουμε τον τύπο εγγραφής «emp_det» με τέσσερις στήλες. Οι στήλες και ο τύπος δεδομένων τους έχουν ως εξής:

  • EMP_NO (ΑΡΙΘΜΟΣ)
  • EMP_NAME (VARCHAR2 (150))
  • ΔΙΑΧΕΙΡΙΣΤΗΣ (ΑΡΙΘΜΟΣ)
  • ΜΙΣΘΟΣ (ΑΡΙΘΜΟΣ)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/
Παραγωγή:
Type created

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

  • Ο παραπάνω κώδικας θα δημιουργήσει τον τύπο emp_det ως αντικείμενο βάσης δεδομένων.
  • Θα έχει 4 στήλη emp_no, emp_name, manager και μισθό όπως ορίζεται.
  • Τώρα το «emp_det» είναι παρόμοιο με άλλους τύπους δεδομένων (όπως ΑΡΙΘΜΟΣ, VARCHAR @ κ.λπ.) Και είναι ορατό σε ολόκληρη τη βάση δεδομένων. Ως εκ τούτου, αυτό μπορεί να χρησιμοποιηθεί σε ολόκληρη τη βάση δεδομένων για να δηλώσει τη μεταβλητή αυτού του τύπου.

Παραγωγή:

Δημιουργήθηκε ο τύπος «emp_det» ως τύπος εγγραφής σε επίπεδο βάσης δεδομένων.

Παράδειγμα 2: Τύπος εγγραφής σε επίπεδο υποπρογράμματος - Πρόσβαση σε επίπεδο στήλης

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

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

DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGINguru99_emp_rec.emp_no:= 1001;guru99_emp_rec.emp_name:=:'XXX';guru99_emp_rec.manager:= 1000;guru99_emp_rec.salary:=10000;dbms_output.put.line('Employee Detail');dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line ('Employee Salary: ' ||guru99_emp_rec.salary);dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager);END;/

Παραγωγή:

Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000

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

  • Γραμμή κώδικα 2-8 : Ο τύπος εγγραφής «emp_det» δηλώνεται με τις στήλες emp_no, emp_name, μισθό και διαχειριστή τύπου δεδομένων ΑΡΙΘΜΟΣ, ΒΑΡΚΑΡ2, ΑΡΙΘΜΟΣ, ΑΡΙΘΜΟΣ.
  • Γραμμή κώδικα 9: η μεταβλητή guru99_emp_rec δηλώνεται ως τύπος δεδομένων «emp_det». Τώρα αυτή η μεταβλητή μπορεί να διατηρήσει την τιμή που περιέχει όλα τα παραπάνω 4 πεδία / στήλες.
  • Γραμμή κώδικα 11: Συμπλήρωση του πεδίου «emp_no» του «guru99_emp_rec» με την τιμή 1001.
  • Γραμμή κώδικα 12: Συμπλήρωση του πεδίου «emp_name» του «guru99_emp_rec» με τιμή XXX.
  • Γραμμή κώδικα 13: Συμπλήρωση του πεδίου «διαχειριστής» του «guru99_emp_rec» με τιμή 1000.
  • Γραμμή κώδικα 14: Συμπλήρωση του πεδίου «μισθός» του «guru99_emp_rec» με τιμή 10000.
  • Γραμμή κώδικα 15-19: Εμφάνιση της τιμής του «guru99_emp_rec» στην έξοδο.

Παράδειγμα 3: Τύπος εγγραφής σε επίπεδο υποπρογράμματος - Πρόσβαση σε επίπεδο γραμμής

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

DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME YARCHAR2( 150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGININSERT INTO emp (emp_no, emp_name, salary, manager) VALUES (1002,'YYY',15000,1000);COMMIT;SELECT emp_no, emp_name, salary, manager INTO guru99_emp_rec FROM emp WHERE emp_no=1002;dbms_output.put_line (‘Employee Detail’);dbms_output.put_line (‘Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line (‘Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line (‘Employee Salary: '||guru99_emp_rec. salary);dbms_output.put_line (‘Employee Manager Number: '||guru99_emp_rec.manager);END;/

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

  • Γραμμή κώδικα 2-8 : Ο τύπος εγγραφής «emp_det» δηλώνεται με τις στήλες emp_no, emp_name, μισθό και διαχειριστή τύπου δεδομένων ΑΡΙΘΜΟΣ, ΒΑΡΚΑΡ2, ΑΡΙΘΜΟΣ, ΑΡΙΘΜΟΣ.
  • Γραμμή κώδικα 9: η μεταβλητή guru99_emp_rec δηλώνεται ως τύπος δεδομένων «emp_det». Τώρα αυτή η μεταβλητή μπορεί να διατηρήσει την τιμή που περιέχει όλα τα παραπάνω 4 πεδία / στήλες.
  • Γραμμή κώδικα 11: Συμπλήρωση του πίνακα emp με δεδομένα 1002 ως emp_no, YYY ως emp_name, 15000 ως μισθός και 1000 ως αριθμός διαχειριστή.
  • Γραμμή κωδικού 12: Πραγματοποίηση της παραπάνω συναλλαγής εισαγωγής.
  • Γραμμή κώδικα 13: Συμπλήρωση της μεταβλητής «guru99_emp_rec» ως δεδομένα επιπέδου γραμμής από το επιλεγμένο ερώτημα για τον αριθμό υπαλλήλου 1002.
  • Γραμμή κώδικα 15-19: Εμφάνιση της τιμής του «guru99_emp_rec» στην έξοδο.

Παραγωγή:

Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000

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