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

In Oracle Sys_refcursor trong Oracle SQL Developer 1.5

Bạn sẽ cần phải lặp qua con trỏ tham chiếu và đối với mỗi hàng trong đó, hãy in ra các trường riêng lẻ. Trong phiên bản cập nhật của mình, bạn cần tìm nạp con trỏ vào các biến vô hướng cục bộ chứ không phải một con trỏ tham chiếu khác:

set serveroutput on;
declare
  result sys_refcursor;
  lsn number; -- guessing the data type
begin
  emp.emp360_utils.GET_EMPLOYEEs(222334,result); 
  loop
    fetch result into lsn; -- and other columns if needed
    exit when result%notfound;
    dbms_output.put_line(lsn);
  end loop;
end;
/

Tôi đã đoán lsn là một số, nếu không thì khai báo đó là đúng loại. Nếu con trỏ trả về nhiều hơn một cột thì bạn sẽ cần khai báo các biến cục bộ cho từng cột đó và tìm nạp tất cả chúng vào các cột đó, ngay cả khi bạn chỉ hiển thị một trong số chúng.

Nếu bạn chỉ muốn hiển thị nó thì bạn có thể sử dụng biến liên kết để thực hiện việc này thay thế (đã kiểm tra trong phiên bản hiện tại và quay lại 1.5.0):

variable result refcursor

begin
  emp.emp360_utils.GET_EMPLOYEEs(222334, :result); 
end;
/

print result

Lưu ý rằng biến variable lệnh không trong declare khối; nó là một lệnh SQL Developer, không phải là một lệnh PL / SQL. Như vậy là print , mặc dù cả hai chỉ được ghi lại trong tài liệu SQL * Plus. Và cũng lưu ý dấu hai chấm ở đầu :result trong khối, cho biết rằng đó là một biến liên kết, không phải là một biến PL / SQL cục bộ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để mô tả một bảng trong Oracle mà không sử dụng lệnh DESCRIBE?

  2. Kiểu Oracle tham gia trong SQL Server

  3. script lấy dữ liệu từ tệp txt trong mệnh đề where

  4. Làm cách nào để xem Kế hoạch Giải thích trong nhà phát triển Oracle Sql?

  5. Oracle DB tương đương với cập nhật khóa trùng lặp