sql >> Database teknologi >  >> RDS >> Oracle

Hvordan returnerer man ResultSet fra Stored Procedure i Oracle?

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
  1. FEJL:kunne ikke få adgang til filen "$libdir/plpython2" - FEJL:kunne ikke få adgang til filen "$libdir/plpython3"

  2. Tilslutning af en 64-bit applikation til Clarion TopSpeed

  3. Postgresql rekursiv selv joinforbindelse

  4. Hvordan vælger man kun de første rækker for hver unik værdi i en kolonne?