Oracle
 sql >> Database >  >> RDS >> Oracle

Come restituire ResultSet dalla stored procedure in Oracle?

In questo tutorial, fornisco un esempio per restituire il set di risultati da una procedura memorizzata in Oracle utilizzando sys_refcursor.

Seguire questi passaggi per restituire il set di risultati da una procedura memorizzata in Oracle.

1. Creare una stored procedure in Oracle

La seguente procedura memorizzata (p_dept) restituirà i nomi dei reparti in sys_refcursor (p_result) dalla tabella dei reparti in cui il numero del reparto è minore o uguale al valore del parametro.

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. Ottieni il set di risultati restituito e il processo

Il seguente blocco PL/SQL otterrà il set di risultati dalla procedura memorizzata (p_dept) e stamperà i nomi dei dipartimenti.

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;
/

Uscita:

ACCOUNTING
RESEARCH
SALES
PL/SQL procedure successfully completed.

Vedi anche:

  • Crea un file PDF utilizzando PL/SQL
  • Ottieni l'ora locale corrente di qualsiasi Paese in PL/SQL