Loại bản ghi là gì?
Kiểu bản ghi là kiểu dữ liệu phức tạp cho phép người lập trình tạo kiểu dữ liệu mới với cấu trúc cột mong muốn.
- Nó nhóm một hoặc nhiều cột để tạo thành một kiểu dữ liệu mới
- Các cột này sẽ có tên và kiểu dữ liệu riêng
- Loại Bản ghi có thể chấp nhận dữ liệu
- Dưới dạng một bản ghi duy nhất bao gồm nhiều cột HOẶC
- Nó có thể chấp nhận giá trị cho một cột cụ thể của bản ghi
- Loại bản ghi chỉ đơn giản có nghĩa là một kiểu dữ liệu mới. Khi kiểu bản ghi được tạo, nó sẽ được lưu trữ như một kiểu dữ liệu mới trong cơ sở dữ liệu và nó sẽ được sử dụng để khai báo một biến trong chương trình.
- Nó sẽ sử dụng từ khóa 'TYPE' để hướng dẫn trình biên dịch rằng nó đang tạo kiểu dữ liệu mới.
- Nó có thể được tạo ở " cấp cơ sở dữ liệu" có thể được lưu trữ dưới dạng các đối tượng cơ sở dữ liệu, được sử dụng trên toàn bộ cơ sở dữ liệu hoặc có thể được tạo ở " cấp chương trình con" , chỉ hiển thị bên trong các chương trình con.
- Kiểu bản ghi mức cơ sở dữ liệu cũng có thể được khai báo cho các cột của bảng để một cột duy nhất có thể chứa dữ liệu phức tạp.
- Dữ liệu trong kiểu dữ liệu này có thể được truy cập bằng cách tham chiếu đến tên_biến của chúng, theo sau là toán tử dấu chấm (.) Theo sau là tên_bài tức là '
. '
Cú pháp khai báo ở cấp độ cơ sở dữ liệu:
CREATE TYPEIS RECORD( ,);
Trong cú pháp đầu tiên, chúng ta có thể thấy từ khóa 'CREATE TYPE', từ khóa này hướng dẫn trình biên dịch tạo kiểu bản ghi có tên "type_name_db" với cột được chỉ định làm đối tượng cơ sở dữ liệu.
Điều này được đưa ra dưới dạng một câu lệnh riêng lẻ và không nằm trong bất kỳ khối nào.
Cú pháp khai báo ở cấp chương trình con:
DECLARETYPEIS RECORD( ,);BEGIN ;END;
Trong cú pháp, chúng ta đang tạo kiểu bản ghi có tên "type_name" chỉ bên trong chương trình con.
Trong cả hai phương pháp khai báo, cách xác định cột và kiểu dữ liệu là tương tự nhau.
Ví dụ 1: Loại RECORD làm Đối tượng cơ sở dữ liệu
Trong chương trình này, chúng ta sẽ xem cách tạo "Kiểu bản ghi" làm đối tượng cơ sở dữ liệu. Chúng tôi sẽ tạo loại bản ghi 'emp_det' với bốn cột. Các cột và kiểu dữ liệu của chúng như sau:
- EMP_NO (NUMBER)
- EMP_NAME (VARCHAR2 (150))
- QUẢN LÝ (NUMBER)
- LƯƠNG (NUMBER)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/Đầu ra:
Type created
Giải thích mã:
- Đoạn mã trên sẽ tạo kiểu emp_det như một đối tượng cơ sở dữ liệu.
- Nó sẽ có 4 cột emp_no, emp_name, manager và lương như đã xác định.
- Bây giờ 'emp_det' tương tự với kiểu dữ liệu khác (như NUMBER, VARCHAR @, v.v.) Và nó hiển thị trong toàn bộ cơ sở dữ liệu. Do đó, điều này có thể được sử dụng trong toàn bộ cơ sở dữ liệu để khai báo biến kiểu này.
Đầu ra:
Đã tạo loại 'emp_det' làm loại bản ghi ở cấp cơ sở dữ liệu.
Ví dụ 2: Loại bản ghi ở cấp chương trình con- Truy cập cấp cột
Trong ví dụ này, chúng ta sẽ xem cách tạo một loại bản ghi ở cấp chương trình con và cách điền và tìm nạp các giá trị từ nó theo cấp cột.
Chúng tôi sẽ tạo record_type 'emp_det' ở cấp chương trình con và chúng tôi sẽ sử dụng cùng một để điền và hiển thị dữ liệu từ nó.
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;/
Đầu ra:
Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000
Giải thích mã:
- Dòng mã 2-8 : Loại bản ghi 'emp_det' được khai báo với các cột emp_no, emp_name, lương và người quản lý kiểu dữ liệu NUMBER, VARCHAR2, NUMBER, NUMBER.
- Dòng mã 9: biến guru99_emp_rec được khai báo là kiểu dữ liệu 'emp_det'. Bây giờ biến này có thể giữ giá trị chứa tất cả 4 trường / cột ở trên.
- Dòng mã 11: Điền trường 'emp_no' của 'guru99_emp_rec' với giá trị 1001.
- Dòng mã 12: Điền trường 'emp_name' của 'guru99_emp_rec' với giá trị XXX.
- Dòng mã 13: Nhập trường 'người quản lý' của 'guru99_emp_rec' với giá trị 1000.
- Dòng mã 14: Điền trường 'lương' của 'guru99_emp_rec' với giá trị 10000.
- Dòng mã 15-19: Hiển thị giá trị của 'guru99_emp_rec' trong đầu ra.
Ví dụ 3: Loại bản ghi ở cấp chương trình con-Truy cập cấp hàng
Trong ví dụ này, chúng ta sẽ xem cách tạo một loại bản ghi ở cấp chương trình con và cách điền nó ở cấp hàng. Chúng tôi sẽ tạo record_type 'emp_det' ở cấp chương trình con và chúng tôi sẽ sử dụng cùng một để điền và hiển thị dữ liệu từ nó.
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;/
Giải thích mã:
- Dòng mã 2-8 : Loại bản ghi 'emp_det' được khai báo với các cột emp_no, emp_name, lương và người quản lý kiểu dữ liệu NUMBER, VARCHAR2, NUMBER, NUMBER.
- Dòng mã 9: biến guru99_emp_rec được khai báo là kiểu dữ liệu 'emp_det'. Bây giờ biến này có thể giữ giá trị chứa tất cả 4 trường / cột ở trên.
- Dòng mã 11: Điền vào bảng emp với dữ liệu 1002 là emp_no, YYY là emp_name, 15000 là lương và 1000 là số người quản lý.
- Dòng mã 12: Đang thực hiện giao dịch chèn ở trên.
- Dòng mã 13: Điền biến 'guru99_emp_rec' làm dữ liệu cấp hàng từ truy vấn chọn cho số nhân viên 1002.
- Dòng mã 15-19: Hiển thị giá trị của 'guru99_emp_rec' trong đầu ra.
Đầu ra:
Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000
Lưu ý: Chỉ có thể truy cập loại bản ghi ở mức cột trong khi chuyển hướng giá trị của nó đến bất kỳ chế độ đầu ra nào.