Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

PL / SQL Con trỏ tham chiếu mạnh với kiểu dữ liệu bản ghi do người dùng xác định

Con trỏ tham chiếu mạnh với kiểu dữ liệu bản ghi do người dùng xác định

Trong hướng dẫn trước, chúng ta đã học cách tạo con trỏ ref mạnh PL / SQL bằng cách sử dụng biến kiểu dữ liệu bản ghi dựa trên bảng. Ở đó, tôi đã chứng minh việc sử dụng con trỏ tham chiếu mạnh để xử lý dữ liệu từ tất cả các cột của bảng nhân viên. Do đó, điều này làm dấy lên một mối lo ngại. Điều gì sẽ xảy ra nếu chúng ta muốn dữ liệu từ một số cột cụ thể của bảng? Đó chính xác là những gì chúng ta sẽ giải quyết trong hướng dẫn hôm nay.

Tuy nhiên, trước khi chuyển sang phần hướng dẫn này, tôi khuyên bạn nên làm quen với kiến ​​thức về PL / SQL Ref Cursors. Đặc biệt là Con trỏ phản chiếu mạnh mẽ và Kiểu dữ liệu bản ghi do người dùng xác định. Hơn nữa, để thuận tiện cho bạn, tôi cung cấp tất cả các liên kết cần thiết ở đây:

  • Cách tạo Con trỏ Tham chiếu Mạnh mẽ bằng Bản ghi Dựa trên Bảng
  • Kiểu dữ liệu bản ghi do người dùng xác định là gì?

Hướng dẫn trước đã chỉ ra thành công cách con trỏ tham chiếu PL / SQL Strong truy xuất và xử lý dữ liệu từ tất cả các cột của một hàng. Nhưng nếu chúng ta muốn dữ liệu từ một cột cụ thể của một hàng thì sao? Giả sử chúng ta chỉ muốn xem E-mail hoặc mức lương của một nhân viên. Do đó, chúng tôi không muốn sử dụng các nguồn lực đắt tiền để truy xuất tất cả các thông tin không cần thiết. Vì vậy, chúng ta có thể sử dụng cùng một con trỏ tham chiếu này cho việc đó không? Hãy cùng tìm hiểu.

Chúng tôi có thể sử dụng Con trỏ tham chiếu mạnh mà chúng tôi đã tạo trong hướng dẫn trước để truy xuất dữ liệu từ một cột cụ thể không?

Câu trả lời cho câu hỏi đó là Không, chúng tôi không thể .

Bởi vì Con trỏ Tham chiếu Mạnh đó được tạo bằng Kiểu dữ liệu Bản ghi Dựa trên Bảng. Để minh họa, khi chúng ta tạo kiểu dữ liệu bản ghi dựa trên bảng, công cụ Oracle sẽ tạo một cấu trúc dữ liệu tổng hợp. Cấu trúc này chứa đầy các trường tương ứng với mỗi cột của bảng được chỉ định.

Hơn nữa, tất cả các trường này tự động được gán cùng tên và cùng kiểu dữ liệu với các cột của bảng cơ sở. Nhưng khi nói đến việc khởi tạo bản ghi bằng một cột cụ thể, chúng tôi phải thực hiện tất cả công việc này theo cách thủ công.

Để hiểu rõ hơn, vui lòng tham khảo hướng dẫn PL / SQL 34. Ở đó, tôi đã thảo luận chi tiết về cách khởi tạo kiểu dữ liệu bản ghi và hoạt động của nó.

Vậy giải pháp cho vấn đề này là gì?

Chúng tôi có thể dễ dàng giải quyết vấn đề này. Chúng ta có thể tạo con trỏ tham chiếu mạnh PL / SQL với biến Kiểu dữ liệu bản ghi do người dùng xác định.

Ví dụ:Con trỏ tham chiếu mạnh PL / SQL với biến kiểu dữ liệu bản ghi do người dùng xác định.

Ví dụ, chúng ta muốn tạo một con trỏ ref mạnh với câu lệnh SELECT. Chỉ trả về tiền lương của nhân viên có id nhân viên là 100.

SET SERVEROUTPUT ON;
DECLARE
	--Create User-Defined Record Datatype
    TYPE my_rec IS RECORD (
        emp_sal employees.salary%TYPE
        );
	--Declare Strong Ref Cursor
    TYPE RefCur IS REF CURSOR RETURN my_rec;
    cur_var REFCUR;
	--Another anchored datatype variable for holding data
    at_var  employees.salary%TYPE;
BEGIN
   OPEN cur_var FOR SELECT salary FROM employees WHERE employee_id = 100;
    FETCH cur_var INTO at_var;
    CLOSE cur_var;
    DBMS_OUTPUT.PUT_LINE ('Salary of the employee is '||at_var);
END;
/

Vì vậy, hãy phá mã này và xem điều gì đang xảy ra ở đây.

Phần khai báo

DECLARE
    TYPE my_rec IS RECORD (
        emp_sal employees.salary%TYPE
        );
    TYPE RefCur IS REF CURSOR RETURN my_rec;
    cur_var REFCUR;
    at_var  employees.salary%TYPE;

Đây là phần khai báo của chúng tôi. Trong ba dòng đầu tiên của phần này, chúng tôi đã tạo kiểu dữ liệu bản ghi do người dùng xác định với tên my_rec. Hơn nữa, kiểu dữ liệu bản ghi do người dùng xác định này chỉ có một trường là emp_sal. Emp_sal là một trường kiểu dữ liệu cố định được thiết kế trên cột lương của bảng nhân viên. Vì emp_sal thuộc loại dữ liệu cố định nên nó sẽ tự động được gán cho kiểu dữ liệu và chiều rộng dữ liệu của cột cơ sở, trong trường hợp này là lương.

Ngay sau đó, chúng tôi đã khai báo Con trỏ tham chiếu mạnh mẽ PL / SQL của mình với tên “RefCur”. Loại trả về của con trỏ giới thiệu mạnh mẽ này là “my_rec” . Tiếp theo là khai báo con trỏ, chúng tôi tạo một biến con trỏ với tên là cur_var. Ngoài ra, biến này được sử dụng để tham chiếu đến con trỏ tham chiếu mạnh phía trước trong mã.

Ngoài biến con trỏ, chúng ta còn có một biến khác được khai báo trong phần này. Biến này là “at_var”, đây lại là một biến kiểu dữ liệu cố định. Nó được sử dụng để lưu trữ dữ liệu do con trỏ trả về.

Bây giờ chúng ta hãy đến với phần thực thi.

Phần Thực thi

BEGIN
    OPEN cur_var FOR SELECT salary FROM employees WHERE employee_id = 100;
    FETCH cur_var INTO at_var;
    CLOSE cur_var;
    DBMS_OUTPUT.PUT_LINE('Salary of the employee is '||at_var);
END;
/

Phần thực thi này có bốn dòng mã thực thi. Hãy xem đó là những gì.

Dòng 1:Mở cho câu lệnh

Câu lệnh này tự động Mở con trỏ được đề cập. Sau đó, nó đính kèm câu lệnh SELECT được chỉ định ngay sau từ khóa FOR.

Trong trường hợp của chúng ta, câu lệnh này đang mở con trỏ mạnh mẽ bằng cách sử dụng biến con trỏ “cur_var” - một câu lệnh SELECT. Chỉ trả về dữ liệu từ "cột lương" của bảng nhân viên.

Dòng 2:Câu lệnh tìm nạp

Câu lệnh này sẽ tìm nạp dữ liệu từ con trỏ ref và lưu trữ nó vào biến “at_var”. Điều quan trọng không kém là đảm bảo rằng kiểu dữ liệu của dữ liệu được tìm nạp và của biến mà dữ liệu đang được lưu trữ phải khớp với nhau. Nếu không sẽ xảy ra lỗi.

Dòng 3:Câu lệnh đóng

Dòng thứ ba là một tuyên bố gần. Đóng một con trỏ mà bạn đã hoàn tất là một phương pháp hay.

Dòng 4:Câu lệnh đầu ra

Cuối cùng, câu lệnh cuối cùng của phần thực thi là câu lệnh DBMS_OUTPUT. Và nó đang hiển thị mức lương của nhân viên lại cho người dùng.

Bốn dòng này hoàn thành phần thực thi của khối PL / SQL này. Hơn nữa, việc thực thi thành công mã này sẽ hiển thị cho bạn mức lương với chuỗi được định dạng.

Có phải một trong những người học tốt hơn bằng cách xem video không? Sau đó, đây là video hướng dẫn về Con trỏ tham chiếu mạnh với loại dữ liệu bản ghi do người dùng xác định.

Đó là nó cho hướng dẫn này. Hãy nhớ Chia sẻ blog này trên phương tiện truyền thông xã hội của bạn và giúp những người khác học hỏi. Bạn có thể đăng ký kênh YouTube để biết thêm nhiều bài hướng dẫn thú vị khác. Cảm ơn và chúc một ngày tốt lành!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng Salesforce SOQL từ Linux

  2. T-SQL Thứ ba # 33:Cú đánh lừa:Lược đồ Switch-A-Roo

  3. Tạo một tập hợp hoặc trình tự không có vòng lặp - phần 2

  4. Giới thiệu về Thư viện SQL Python

  5. Tùy chọn điều chỉnh hiệu suất cơ sở dữ liệu Azure SQL