Ich habe ein PL/SQL-Paket, das einen sys_refcursor basierend auf der ID zurückgibt, die Sie übergeben. Ich würde gerne einige IDs durchlaufen und einen neuen Ref-Cursor mit einer Spalte aus der ursprünglichen Ergebnismenge erstellen, die für jede ID wiederholt wird. (. Art einer Kreuztabelle) Eine sehr vereinfachte Version des Blocks PL/SQL wie folgt aussieht:Verwenden Sie Oracle-Cursor in einem sys_refcursor
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;
Ich denke, wenn ich so etwas wie dieses
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;
Arbeits
hatte, habe ich es nehmen konnte aus da ... irgendwelche Gedanken? Oder vielleicht Klärung der Frage, die ich stellen sollte.
Danke für den Tipp auf FM9G999G999G999, das ist großartig! Ich schaue jetzt in die Pipeline-Funktion. – Lloyd