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