En este tutorial, doy un ejemplo para devolver un conjunto de resultados de un procedimiento almacenado en Oracle usando sys_refcursor.
Siga estos pasos para devolver un conjunto de resultados de un procedimiento almacenado en Oracle.
1. Crear un Procedimiento Almacenado en Oracle
El siguiente procedimiento almacenado (p_dept) devolverá los nombres de departamentos en sys_refcursor (p_result) de la tabla de departamentos donde el número de departamento es menor o igual que el valor del parámetro.
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. Obtenga el conjunto de resultados y el proceso devueltos
El siguiente bloque PL/SQL obtendrá el conjunto de resultados del procedimiento almacenado (p_dept) e imprimirá los nombres de los departamentos.
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; /
Salida:
ACCOUNTING RESEARCH SALES PL/SQL procedure successfully completed.
Ver también:
- Cree un archivo PDF usando PL/SQL
- Obtener la hora local actual de cualquier país en PL/SQL