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

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

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

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

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

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

CREATE TYPE <type_name_db> IS RECORD
(
<column 1> <datatype>,
);

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

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

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

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

DECLARE
TYPE <type_name> IS RECORD
(
<columnl> <datatype>,
);
BEGIN
<execution_section>;
END;

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

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

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

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

  • EMP_NO (NUMBER)
  • EMP_NAME (VARCHAR2 (150))
  • MANAGER (ΑΡΙΘΜΟΣ)
  • ΜΙΣΘΟΣ (ΑΡΙΘΜΟΣ)
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, διευθυντή και μισθό όπως ορίζεται.
  • Τώρα το 'emp_det' είναι παρόμοιο με άλλο Τύπος δεδομένων (όπως ΑΡΙΘΜΟΣ, VARCHAR@ κ.λπ.) Και είναι ορατό σε ολόκληρη τη βάση δεδομένων. Ως εκ τούτου, αυτό μπορεί να χρησιμοποιηθεί σε ολόκληρη τη βάση δεδομένων για να δηλώσει τη μεταβλητή αυτού του τύπου.

Παραγωγή:

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

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

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

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

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

DECLARE
TYPE emp_det IS RECORD
(
EMP_NO NUMBER, 
EMP_NAME VARCHAR2(150),
MANAGER NUMBER, 
SALARY NUMBER
);
guru99_emp_rec emp_det;
BEGIN
guru99_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 Detail
Employee Number: 1001
Employee Name: XXX
Employee Salary: 10000 
Employee Manager Number: 1000

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

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

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

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

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

DECLARE
TYPE emp_det IS RECORD
(
EMP_NO NUMBER,
EMP_NAME YARCHAR2( 150),
MANAGER NUMBER,
SALARY NUMBER
);
guru99_emp_rec emp_det;
BEGIN
INSERT 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, μισθός και διαχειριστής τύπου δεδομένων NUMBER, VARCHAR2, NUMBER, NUMBER.
  • Κωδικός γραμμή 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 Detail 
Employee Number: 1002 
Employee Name: YYY 
Employee Salary: 1000 
Employee Manager Number: 15000

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