sql >> Databasteknik >  >> RDS >> Oracle

Hur returnerar man resultatuppsättning från lagrad procedur i Oracle?

I den här handledningen ger jag ett exempel för att returnera resultat från en lagrad procedur i Oracle med sys_refcursor.

Följ dessa steg för att returnera resultat från en lagrad procedur i Oracle.

1. Skapa en lagrad procedur i Oracle

Följande lagrade procedur (p_dept) returnerar avdelningsnamn i sys_refcursor (p_result) från avdelningstabellen där avdelningsnumret är mindre än eller lika med parametervärdet.

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 returnerade resultatet och bearbeta

Följande PL/SQL-block kommer att hämta resultaten från den lagrade proceduren (p_dept) och kommer att skriva ut avdelningsnamnen.

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;
/

Utdata:

ACCOUNTING
RESEARCH
SALES
PL/SQL procedure successfully completed.

Se även:

  • Skapa en PDF-fil med PL/SQL
  • Hämta aktuell lokal tid för vilket land som helst i PL/SQL
  1. Hur man uppgraderar PostgreSQL 11 till PostgreSQL 12 med noll driftstopp

  2. Hur skapar man en PostgreSQL-partitionerad sekvens?

  3. Hur man använder FILEPROPERTY() i SQL Server

  4. SQL Server OM INTE FINNS Användning?