Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann ich ResultSet aus einer gespeicherten Prozedur in Oracle zurückgeben?

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