In deze zelfstudie geef ik een voorbeeld om resultaten te retourneren van een opgeslagen procedure in Oracle met sys_refcursor.
Volg deze stappen om een resultaatset van een opgeslagen procedure in Oracle te retourneren.
1. Maak een opgeslagen procedure in Oracle
De volgende opgeslagen procedure (p_dept) retourneert afdelingsnamen in sys_refcursor (p_result) uit de afdelingstabel waar het afdelingsnummer kleiner is dan of gelijk is aan de parameterwaarde.
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. Ontvang de geretourneerde resultatenset en verwerk deze
Het volgende PL/SQL-blok haalt de resultaten uit de opgeslagen procedure (p_dept) en drukt de afdelingsnamen af.
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; /
Uitvoer:
ACCOUNTING RESEARCH SALES PL/SQL procedure successfully completed.
Zie ook:
- Maak een PDF-bestand met PL/SQL
- Ontvang de huidige lokale tijd van elk land in PL/SQL