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

Làm thế nào để sử dụng bản ghi để lặp lại một con trỏ tham chiếu?

Bạn không thể xác định loại bản ghi dựa trên REF CURSOR được nhập yếu. Vì loại con trỏ được xác định trong gói có thể được sử dụng để trả về dữ liệu từ một truy vấn tùy ý với các cột tùy ý, trình biên dịch PL / SQL không thể xác định loại bản ghi thích hợp để tìm nạp dữ liệu.

Nếu bạn biết dữ liệu thực tế đang được trả về từ hàm, bạn có thể khai báo một bản ghi thuộc loại đó để tìm nạp dữ liệu vào. Ví dụ:nếu tôi khai báo một hàm trả về loại con trỏ được gõ yếu nhưng tôi biết rằng con trỏ thực sự trả về một con trỏ dựa trên EMP , tôi có thể tìm nạp dữ liệu vào EMP%ROWTYPE ghi lại (lưu ý rằng SYS_REFCURSOR là loại REF CURSOR được định kiểu yếu do hệ thống xác định)

create or replace function f1
  return sys_refcursor
is
  l_rc sys_refcursor;
begin
  open l_rc
   for select *
         from emp;
  return l_rc;
end;

declare
  l_rc sys_refcursor;
  l_emp emp%rowtype;
begin
  l_rc := f1;
  loop
    fetch l_rc into l_emp;
    exit when l_rc%notfound;
    dbms_output.put_line( l_emp.empno );
  end loop;
end;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Một chỉ mục là nhóm hay không được gộp trong Oracle?

  2. Truy vấn trong Oracle để chọn với truy vấn con

  3. sự khác biệt giữa kế hoạch giải thích và kế hoạch thực hiện

  4. Cách xuất dữ liệu thành tệp CSV trong Oracle bằng quy trình PL SQL

  5. sự cố khi sử dụng các tham số Oracle trong SELECT IN