在PL/SQL中,每次循环迭代追加多条记录



我试图在Oracle PL/SQL中编写一个过程,看起来像下面的代码片段:

    > LOOP:   
         >READ INPUT FROM CURSOR
         >GET OUTPUTS USING SELECT QUERY(OUTPUT RECORD COUNT MAY VARY ON EACH ITERATION)
         >APPEND OUTPUT TO SOME DATA STRUCTURE 
    > END LOOP; 
    >RETURN DATA STRUCTURE

实际上我被这个附加任务困住了。在每次迭代中,使用选择查询可以得到不同数量的输出。我想把所有记录附加到一个数据结构中。

假设内部select查询返回3列ColA,ColB,ColC,循环迭代2次。然后在第一次迭代中返回:

1、2、3
3、4、5

在下一次迭代中,它返回4,5,7。

过程将返回一些包含以下内容的数据结构:

1、2、3
3、4、5
4、5、7

有办法吗?

我想这可以用流水线函数来解决。所以它看起来像这样:

声明类型

 TYPE my_record is RECORD(
       cola      number,
       colb      number,
       colc       number);
TYPE my_table IS TABLE OF my_record;

一个函数

function  get_results()  RETURN my_table PIPELINED is 
    my_rec   my_record:=null;
    cursor myCursor(data number) is
    --some select expression
    ;
    begin 
    --loop through outputs 
     FOR item IN myCursor(data)  LOOP
      my_rec:=null; 
      select item.value1,item.value2,item.value2 into rec from dual;
      PIPE ROW(my_rec);
     end loop;
    return;
    end; 

,最后使用

SELECT * FROM TABLE(get_results);

最新更新