Example, is the systimestamp unique? (yes it is if not parallel)
create or replace type t as object (
t timestamp(8),
s varchar2(50)
)
drop type tt
create type tt as table of t
create or replace function tst return tt pipelined is
d t;
i number;
begin
--open cursor
begin
for i in 1 .. 100 loop
d := t(systimestamp, 'pippo'||i);
dbms_output.put_line('piping row '||i);
pipe row(d);
end loop;
exception
when others then
--close cursor
dbms_output.put_line('finished');
end;
end;
select * from table(tst) where rownum<5 |