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

Cách tạo PL / SQL SYS_REFCURSOR trong cơ sở dữ liệu Oracle

PL / SQL SYS_REFCURSOR Trong Cơ sở dữ liệu Oracle

Như chúng ta đã tìm hiểu trong phần giới thiệu về con trỏ tham chiếu rằng có ba loại con trỏ tham chiếu PL / SQL trong Cơ sở dữ liệu Oracle.

  1. Con trỏ giới thiệu mạnh
  2. Con trỏ tham chiếu yếu và
  3. SYS_REFCURSOR

Cho đến nay trong loạt bài này, chúng tôi đã đề cập đến các khái niệm về con trỏ tham chiếu Mạnh cũng như Yếu. Loại con trỏ duy nhất vẫn chưa được chạm đến là PL / SQL SYS_REFCURSOR trong Cơ sở dữ liệu Oracle. Chúng ta sẽ tìm hiểu điều gì trong blog này.

PL / SQL SYS_REFCURSOR là gì?

SYS_REFCURSOR là một con trỏ tham chiếu yếu được xác định trước, được tích hợp sẵn với phần mềm cơ sở dữ liệu Oracle.

Việc trở thành một con trỏ tham chiếu được xác định trước sẽ giúp chúng ta như thế nào?

SYS_REFCURSOR là một con trỏ ref yếu được xác định trước, có nghĩa là chúng ta không phải xác định nó vào mã của mình như chúng ta đã làm với con trỏ ref yếu rõ ràng trong hướng dẫn trước. Như chúng ta đã học trong hướng dẫn đó rằng việc tạo một con trỏ tham chiếu yếu là một quá trình gồm hai bước. Đầu tiên, bạn phải tạo “loại con trỏ tham chiếu yếu” và sau đó bạn phải tạo “biến con trỏ” bằng cách sử dụng con trỏ tham chiếu đó.

Khi sử dụng SYS_REFCURSOR, bạn chỉ cần tạo một biến con trỏ và không phải tạo gì khác. SYS_REFCURSOR thu nhỏ hoàn toàn bước đầu tiên mà bạn tạo loại con trỏ tham chiếu yếu.

Vì vậy, Sys_Refcursor là một con trỏ tham chiếu được tích hợp sẵn, chúng ta có thể tìm định nghĩa của nó ở đâu?

Bạn có thể tìm hiểu định nghĩa của PL / SQL SYS_REFCURSOR trong tập lệnh có tên “stdspec.sql”. Bạn có thể tìm tập lệnh này vào thư mục có đường dẫn như sau.

%ORACLE_HOME% \RDBMS\ADMIN\stdspec.sql

Định nghĩa SYS_REFCURSOR sẽ giống như sau:

SYS_REFCURSOR thuộc loại Con trỏ Tham chiếu nào?

Như đã đề cập ở trên trong định nghĩa, SYS_REFCURSOR là Con trỏ phản chiếu yếu.

Bây giờ bạn đã xóa gần như tất cả các nghi ngờ về SYS_REFCURSOR. Tôi chỉ muốn hỏi bạn một câu cuối cùng.

Thông tin:Không có khoảng cách giữa REF và CURSOR. Nó là một từ duy nhất "Con trỏ tham chiếu".
Sai:SYS_REF CURSOR
Đúng:SYS_REFCURSOR

Tại sao ai đó lại khai báo một con trỏ tham chiếu yếu khi chúng ta đã có một con trỏ được xác định trước?

Đó thực sự là một câu hỏi rất hay. Câu trả lời cho câu hỏi này là Không, chúng tôi không cần tạo con trỏ tham chiếu yếu một cách rõ ràng. Oracle đã giảm thiểu nhu cầu tạo một con trỏ tham chiếu yếu bằng cách chuyển SYS_REFCURSOR như một phần của gói tiêu chuẩn kể từ Oracle Database 9i mặc dù tùy chọn tạo một con trỏ vẫn có sẵn.

Nó giống như một sự lựa chọn cá nhân, nếu ai đó muốn tạo một con trỏ ref yếu thì họ có thể. Nếu không, thì họ có SYS_REFCURSOR luôn sẵn sàng sử dụng. Người bạn thân mến của tôi, Steven Feuerstein đã làm một bài đăng trên blog rất hay để trả lời câu hỏi này mà bạn có thể đọc ở đây.

Hãy xem một ví dụ rất dễ hiểu về cách sử dụng PL / SQL SYS_REFCURSOR trong Cơ sở dữ liệu Oracle.

Ví dụ:Cách tạo PL / SQL SYS_REFCURSOR trong Cơ sở dữ liệu Oracle?

SET SERVEROUTPUT ON;
DECLARE
    --Declare cursor variable of SYS_REFCURSOR type
    cur_var SYS_REFCURSOR;
    
    --Declare variables for holding data
    f_name  employees.first_name%TYPE;
    emp_sal employees.salary%TYPE;
BEGIN
OPEN cur_var FOR SELECT first_name, Salary FROM employees WHERE employee_id = 100;
    FETCH cur_var INTO f_name, emp_sal;
    CLOSE cur_var;
    DBMS_OUTPUT.PUT_LINE(f_name ||' '||emp_sal);
END;
/

Bạn có thể xem video hướng dẫn trên kênh YouTube để được giải thích chi tiết về đoạn mã trên.

Hy vọng bạn thích đọc và học được điều gì đó mới. Hãy chia sẻ blog này trên phương tiện truyền thông xã hội của bạn với bạn bè của bạn. 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. Cách sử dụng thực thi ngay lập tức với mệnh đề INTO trong cơ sở dữ liệu Oracle

  2. Oracle Trước khi Chèn HOẶC Cập nhật Ví dụ về trình kích hoạt

  3. Trang chủ của Oracle 10g express không xuất hiện

  4. Nhận Giờ địa phương hiện tại của bất kỳ quốc gia nào trong PL / SQL

  5. Làm cách nào để thực hiện chèn hàng loạt vào cơ sở dữ liệu Oracle bằng Python?