В този урок давам пример за връщане на набор от резултати от съхранена процедура в Oracle с помощта на sys_refcursor.
Следвайте тези стъпки, за да върнете набор от резултати от съхранена процедура в Oracle.
1. Създайте съхранена процедура в Oracle
Следната съхранена процедура (p_dept) ще върне имената на отдели в sys_refcursor (p_result) от таблицата на отделите, където номерът на отдела е по-малък или равен на стойността на параметъра.
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. Вземете върнатия набор от резултати и процес
Следващият PL/SQL блок ще получи набора от резултати от съхранената процедура (p_dept) и ще отпечата имената на отделите.
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; /
Изход:
ACCOUNTING RESEARCH SALES PL/SQL procedure successfully completed.
Вижте също:
- Създайте PDF файл с помощта на PL/SQL
- Вземете текущо местно време на която и да е държава в PL/SQL
-
Съхранената процедура на Spring - резултатите, които се връщат от процедурата, винаги са празни
-
Създаване на централен изглед в SQL от SQL таблица
-
Как да покажа работещи процеси в Oracle DB?
-
ORA-04091:таблицата [blah] мутира, тригерът/функцията може да не я види
-
Инсталиране на Oracle 11g Release 2 Enterprise Edition на Windows 7 32-Bit