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

Làm thế nào để trả về tập kết quả từ thủ tục đã lưu trữ trong Oracle?

Trong hướng dẫn này, tôi đưa ra một ví dụ để trả về tập kết quả từ một thủ tục được lưu trữ trong Oracle bằng cách sử dụng sys_refcursor.

Làm theo các bước sau để trả về tập kết quả từ một quy trình được lưu trữ trong Oracle.

1. Tạo một thủ tục được lưu trữ trong Oracle

Thủ tục được lưu trữ sau (p_dept) sẽ trả về tên bộ phận trong sys_refcursor (p_result) từ bảng bộ phận trong đó số bộ phận nhỏ hơn hoặc bằng giá trị tham số.

CREATE OR REPLACE PROCEDURE p_dept (p_deptno IN dept.deptno%TYPE,
p_result OUT SYS_REFCURSOR)
IS
BEGIN
OPEN p_result FOR
SELECT dname
FROM dept
WHERE deptno <= p_deptno;
END;
/

2. Lấy tập hợp và xử lý kết quả trả về

Khối PL / SQL sau sẽ nhận tập kết quả từ thủ tục được lưu trữ (p_dept) và sẽ in tên bộ phận.

SET SERVEROUTPUT ON;
DECLARE
v_result SYS_REFCURSOR;
v_dname VARCHAR2 (100);
BEGIN

/* call the procedure by passing department numbner and sys_refcursor for resultset */
p_dept (30, v_result);

LOOP
FETCH v_result INTO v_dname;

EXIT WHEN v_result%NOTFOUND;
DBMS_OUTPUT.put_line (v_dname);
END LOOP;
END;
/

Đầu ra:

ACCOUNTING
RESEARCH
SALES
PL/SQL procedure successfully completed.

Xem thêm:

  • Tạo tệp PDF bằng PL / SQL
  • Nhận Giờ địa phương hiện tại của bất kỳ quốc gia nào trong PL / SQL
  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ỗi khi sử dụng oracle.dataaccess.dll

  2. ORA-00904:số nhận dạng không hợp lệ

  3. System.Data.OracleClient yêu cầu phần mềm máy khách Oracle phiên bản 8.1.7 trở lên

  4. Bản dịch Microsoft T-SQL sang Oracle SQL

  5. Làm cách nào để liệt kê tất cả các bảng trong một lược đồ trong Oracle SQL?