I thought about writing a simple tail -f
like utility to "trace" the progress of some figures within the database:
create or replace function tail_f return varchar2_tab pipelined as
n number;
begin
loop
exit when ...
select count(*) into n from ... where ...;
pipe row(sysdate || ' n= ' || n);
dbms_lock.sleep(60);
end loop;
return;
end tail_f;
And then I'd like to select * from table(tail_f)
in SQL*Plus.
In order to fetch the rows one by one, I SET ARRAYSIZE 1
. Yet, the records (except the first one) are fetched in pairs.
Is there an explanation for this and how can I get the records as soon as one is piped?
Best Answer
Metalink bug 9103343 states:
Also see Metalink doc 1265916.1