Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como retornar ResultSet do procedimento armazenado no Oracle?


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