我有一個PL/SQL包,它基於您傳遞它的id返回一個sys_refcursor。我想遍歷一些ID並創建一個新的引用遊標,其中每個ID都重複一個原始結果集。 (排序交叉選項卡)的PL/SQL塊的一個非常簡化的版本是這樣的:在sys_refcursor中使用oracle遊標
create or replace package body dashboard_package is
procedure visits(RC in out sys_refcursor, IdNumber varchar2) as
BEGIN
OPEN RC FOR
select *
from (
select cat, cat_order, subcat, label_text
, trim(to_char(sum(v.current_month),'9,999,999,999')) current_month
, trim(to_char(sum(v.ly_month),'9,999,999,999')) ly_month
, trim(to_char(sum(v.ytd_tot),'9,999,999,999')) ytd_tot
, trim(to_char(sum(v.lytd_tot),'9,999,999,999')) lytd_tot
, trim(to_char(sum(v.ly_tot),'9,999,999,999')) ly_tot
from dashboard v
where v.id_number = IdNumber
group by cat_order, subcat, cat, label_text
union all
...
) a
order by cat_order, subcat;
END;
END;
我想,如果我有這樣的事情
create or replace procedure test_refcur is
refCursorValue SYS_REFCURSOR;
begin
dashboard_package.visits(refCursorValue,12345);
for cursrow in refCursorValue loop
dbms_output.put_line(cursrow.ytd_tot);
end loop;
end test_refcur;
的工作,我可以把它從那裏...有什麼想法?或者也許可以澄清我應該問的問題。
感謝您提供FM9G999G999G999的提示,太棒了!我正在研究管道功能。 – Lloyd 2009-07-09 14:44:39