sql >> Database >  >> RDS >> Oracle

Hoe ResultSet te retourneren van opgeslagen procedure in Oracle?

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
  1. TNS-12519 zonder max. bereikte processen

  2. Sessies beheren in Node.js met Passport, Redis en MySQL

  3. Hoe geen duplicaten in SQL te tonen

  4. Fix "ERROR 1136 (21S01):Kolomtelling komt niet overeen met waardetelling in rij 2" bij gebruik van de VALUES-instructie in MySQL