有没有办法在游标中执行存储过程?

时间:2018-02-08 17:07:24

标签: oracle plsql oracle12c

"查询"是字符串变量,我通过执行以下来附加结果。

FOR x IN
    (SELECT Years FROM School_Years)
LOOP
    query := query || x.Year || ',' ;            
END LOOP;

我的问题:我已经有了存储过程(GetSchoolYears)" SELECT Years FROM School_Years"。

而不是" SELECT Years FROM School_Years",如何使用存储过程名称?像......一样......

FOR x IN
    (GetSchoolYears)
LOOP
    query := query || x.Year || ',' ;            
END LOOP;

或在IN(---)

中使用该存储过程的结果的任何其他想法

--------存储过程------------

create or replace
PROCEDURE GetSchoolYears
(

   p_cursor IN OUT SYS_REFCURSOR 

) AS 
BEGIN

 OPEN p_cursor FOR 

SELECT Years FROM School_Years;

END GetSchoolYears;

1 个答案:

答案 0 :(得分:0)

我不知道这是否符合您的期望,但这是如何在PL / SQL中使用引用游标。

declare 
    rc sys_refcursor;
    l_rec School_Years.years%type;
    query varchar2(2000);
begin
    GetSchoolYears(rc);
    loop
        fetch rc into l_rec;
        exit when rc%notfound;
        query := query || l_rec || ',' ;     
    end loop;
    dbms_output.put_line(query);
end;
/