Thứ Tư, 26 tháng 10, 2022

PL/SQL - Bản ghi (Records)

Trong chương này, chúng ta sẽ thảo luận về Bản ghi trong PL/SQL. Bản ghi là một cấu trúc dữ liệu có thể chứa các mục dữ liệu thuộc các loại khác nhau. Bản ghi bao gồm các trường khác nhau, tương tự như một hàng của bảng cơ sở dữ liệu.

Ví dụ, bạn muốn theo dõi sách của mình trong thư viện. Bạn có thể muốn theo dõi các thuộc tính sau của mỗi cuốn sách, chẳng hạn như Tên sách, Tác giả, Chủ đề, ID sách. Bản ghi có chứa một trường cho mỗi mục này cho phép coi SÁCH như một đơn vị logic và cho phép bạn tổ chức và trình bày thông tin của nó theo cách tốt hơn.

PL/SQL có thể xử lý các loại bản ghi sau:

  • Dựa trên bảng

  • Bản ghi dựa trên con trỏ

  • Bản ghi do người dùng xác định

Bản ghi dựa trên bảng

Thuộc tính% ROWTYPE cho phép lập trình viên tạo các bản ghi dựa trên bảng và được đánh dấu bằng con trỏ .

Ví dụ sau minh họa khái niệm bản ghi dựa trên bảng . Chúng tôi sẽ sử dụng bảng CUSTOMERS mà chúng tôi đã tạo và sử dụng trong các chương trước -

DECLARE 

   customer_rec customers%rowtype; 

BEGIN 

   SELECT * into customer_rec 

   FROM customers 

   WHERE id = 5;  

   dbms_output.put_line('Customer ID: ' || customer_rec.id); 

   dbms_output.put_line('Customer Name: ' || customer_rec.name); 

   dbms_output.put_line('Customer Address: ' || customer_rec.address); 

   dbms_output.put_line('Customer Salary: ' || customer_rec.salary); 

END; 

/

Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:

Customer ID: 5 

Customer Name: Hardik 

Customer Address: Bhopal 

Customer Salary: 9000 

 

PL/SQL procedure successfully completed.


Bản ghi dựa trên con trỏ

Ví dụ sau minh họa khái niệm bản ghi dựa trên con trỏ . Chúng tôi sẽ sử dụng bảng CUSTOMERS mà chúng tôi đã tạo và sử dụng trong các chương trước -

DECLARE 

   CURSOR customer_cur is 

      SELECT id, name, address  

      FROM customers; 

   customer_rec customer_cur%rowtype; 

BEGIN 

   OPEN customer_cur; 

   LOOP 

      FETCH customer_cur into customer_rec; 

      EXIT WHEN customer_cur%notfound; 

      DBMS_OUTPUT.put_line(customer_rec.id || ' ' || customer_rec.name); 

   END LOOP; 

END; 

/

Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:

1 Ramesh 

2 Khilan 

3 kaushik 

4 Chaitali 

5 Hardik 

6 Komal  


PL/SQL procedure successfully completed. 


Bản ghi do người dùng xác định

PL/SQL cung cấp kiểu bản ghi do người dùng xác định cho phép bạn xác định các cấu trúc bản ghi khác nhau. Các bản ghi này bao gồm các trường khác nhau. Giả sử bạn muốn theo dõi sách của mình trong thư viện. Bạn có thể muốn theo dõi các thuộc tính sau về mỗi cuốn sách -

  • Tiêu đề

  • Tác giả

  • Môn học

  • ID sách

Xác định bản ghi

Loại bản ghi được định nghĩa là -

TYPE 

type_name IS RECORD 

  ( field_name1  datatype1  [NOT NULL]  [:= DEFAULT EXPRESSION], 

   field_name2   datatype2   [NOT NULL]  [:= DEFAULT EXPRESSION], 

   ... 

   field_nameN  datatypeN  [NOT NULL]  [:= DEFAULT EXPRESSION); 

record-name  type_name;


Bản ghi Sách được khai báo theo cách sau:

DECLARE 

TYPE books IS RECORD 

(title  varchar(50), 

   author  varchar(50), 

   subject varchar(100), 

   book_id   number); 

book1 books; 

book2 books;

Truy cập các trường

Để truy cập bất kỳ trường nào của bản ghi, chúng tôi sử dụng toán tử dấu chấm (.) . Toán tử truy cập thành viên được mã hóa là khoảng thời gian giữa tên biến bản ghi và trường mà chúng ta muốn truy cập. Sau đây là một ví dụ để giải thích việc sử dụng bản ghi:

DECLARE 

   type books is record 

      (title varchar(50), 

      author varchar(50), 

      subject varchar(100), 

      book_id number); 

   book1 books; 

   book2 books; 

BEGIN 

   -- Book 1 specification 

   book1.title  := 'C Programming'; 

   book1.author := 'Nuha Ali ';  

   book1.subject := 'C Programming Tutorial'; 

   book1.book_id := 6495407;  

   -- Book 2 specification 

   book2.title := 'Telecom Billing'; 

   book2.author := 'Zara Ali'; 

   book2.subject := 'Telecom Billing Tutorial'; 

   book2.book_id := 6495700;  

  

  -- Print book 1 record 

   dbms_output.put_line('Book 1 title : '|| book1.title); 

   dbms_output.put_line('Book 1 author : '|| book1.author); 

   dbms_output.put_line('Book 1 subject : '|| book1.subject); 

   dbms_output.put_line('Book 1 book_id : ' || book1.book_id); 

   

   -- Print book 2 record 

   dbms_output.put_line('Book 2 title : '|| book2.title); 

   dbms_output.put_line('Book 2 author : '|| book2.author); 

   dbms_output.put_line('Book 2 subject : '|| book2.subject); 

   dbms_output.put_line('Book 2 book_id : '|| book2.book_id); 

END; 

/

Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:

Book 1 title : C Programming 

Book 1 author : Nuha Ali 

Book 1 subject : C Programming Tutorial 

Book 1 book_id : 6495407 

Book 2 title : Telecom Billing 

Book 2 author : Zara Ali 

Book 2 subject : Telecom Billing Tutorial 

Book 2 book_id : 6495700  


PL/SQL procedure successfully completed. 


Ghi lại dưới dạng Tham số chương trình con

Bạn có thể truyền một bản ghi dưới dạng tham số chương trình con giống như bạn truyền bất kỳ biến nào khác. Bạn cũng có thể truy cập các trường bản ghi theo cách giống như cách bạn truy cập trong ví dụ trên -

DECLARE 

   type books is record 

      (title  varchar(50), 

      author  varchar(50), 

      subject varchar(100), 

      book_id   number); 

   book1 books; 

   book2 books;  

PROCEDURE printbook (book books) IS 

BEGIN 

   dbms_output.put_line ('Book  title :  ' || book.title); 

   dbms_output.put_line('Book  author : ' || book.author); 

   dbms_output.put_line( 'Book  subject : ' || book.subject); 

   dbms_output.put_line( 'Book book_id : ' || book.book_id); 

END; 

   

BEGIN 

   -- Book 1 specification 

   book1.title  := 'C Programming'; 

   book1.author := 'Nuha Ali ';  

   book1.subject := 'C Programming Tutorial'; 

   book1.book_id := 6495407;

   

   -- Book 2 specification 

   book2.title := 'Telecom Billing'; 

   book2.author := 'Zara Ali'; 

   book2.subject := 'Telecom Billing Tutorial'; 

   book2.book_id := 6495700;  

   

   -- Use procedure to print book info 

   printbook(book1); 

   printbook(book2); 

END; 

/ 

Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:

Book  title : C Programming 

Book  author : Nuha Ali 

Book subject : C Programming Tutorial 

Book  book_id : 6495407 

Book title : Telecom Billing 

Book author : Zara Ali 

Book subject : Telecom Billing Tutorial 

Book book_id : 6495700  


PL/SQL procedure successfully completed.


=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
pl/sql, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master