sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo devolver ResultSet desde un procedimiento almacenado en Oracle?

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