I denne øvelse giver jeg et eksempel på at returnere resultater fra en lagret procedure i Oracle ved hjælp af sys_refcursor.
Følg disse trin for at returnere resultater fra en lagret procedure i Oracle.
1. Opret en lagret procedure i Oracle
Den følgende lagrede procedure (p_dept) returnerer afdelingsnavne i sys_refcursor (p_result) fra afdelingstabellen, hvor afdelingsnummeret er mindre end eller lig med parameterværdien.
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 returnerede resultatsæt og proces
Den følgende PL/SQL-blok vil hente resultaterne fra den lagrede procedure (p_dept) og udskrive afdelingsnavnene.
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; /
Output:
ACCOUNTING RESEARCH SALES PL/SQL procedure successfully completed.
Se også:
- Opret en PDF-fil ved hjælp af PL/SQL
- Få aktuel lokaltid for ethvert land i PL/SQL