Neste tutorial, estou dando um exemplo para retornar o conjunto de resultados de um procedimento armazenado no Oracle usando sys_refcursor.
Siga estas etapas para retornar o conjunto de resultados de um procedimento armazenado no Oracle.
1. Crie um procedimento armazenado no Oracle
O procedimento armazenado a seguir (p_dept) retornará nomes de departamentos em sys_refcursor (p_result) da tabela de departamentos em que o número do departamento é menor ou igual ao valor do 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. Obtenha o ResultSet e o processo retornados
O bloco PL/SQL a seguir obterá o conjunto de resultados do procedimento armazenado (p_dept) e imprimirá os nomes dos 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; /
Saída:
ACCOUNTING RESEARCH SALES PL/SQL procedure successfully completed.
Veja também:
- Criar um arquivo PDF usando PL/SQL
- Obtenha a hora local atual de qualquer país em PL/SQL