I den här handledningen ger jag ett exempel för att returnera resultat från en lagrad procedur i Oracle med sys_refcursor.
Följ dessa steg för att returnera resultat från en lagrad procedur i Oracle.
1. Skapa en lagrad procedur i Oracle
Följande lagrade procedur (p_dept) returnerar avdelningsnamn i sys_refcursor (p_result) från avdelningstabellen där avdelningsnumret är mindre än eller lika med parametervärdet.
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. Få det returnerade resultatet och bearbeta
Följande PL/SQL-block kommer att hämta resultaten från den lagrade proceduren (p_dept) och kommer att skriva ut avdelningsnamnen.
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; /
Utdata:
ACCOUNTING RESEARCH SALES PL/SQL procedure successfully completed.
Se även:
- Skapa en PDF-fil med PL/SQL
- Hämta aktuell lokal tid för vilket land som helst i PL/SQL