In diesem Tutorial gebe ich ein Beispiel für die Rückgabe von Resultsets aus einer gespeicherten Prozedur in Oracle mit sys_refcursor.
Befolgen Sie diese Schritte, um eine Ergebnismenge von einer gespeicherten Prozedur in Oracle zurückzugeben.
1. Erstellen Sie eine gespeicherte Prozedur in Oracle
Die folgende gespeicherte Prozedur (p_dept) gibt Abteilungsnamen in sys_refcursor (p_result) aus der Abteilungstabelle zurück, wobei die Abteilungsnummer kleiner oder gleich dem Parameterwert ist.
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. Holen Sie sich das zurückgegebene ResultSet und verarbeiten Sie
Der folgende PL/SQL-Block erhält die Ergebnismenge aus der gespeicherten Prozedur (p_dept) und gibt die Abteilungsnamen aus.
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; /
Ausgabe:
ACCOUNTING RESEARCH SALES PL/SQL procedure successfully completed.
Siehe auch:
- Erstellen Sie eine PDF-Datei mit PL/SQL
- Erhalten Sie die aktuelle Ortszeit eines beliebigen Landes in PL/SQL