Ich dachte darüber nach, ein einfaches tail -f
Hilfsprogramm zu schreiben , um den Fortschritt einiger Zahlen in der Datenbank zu "verfolgen":
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;
Und dann möchte ich select * from table(tail_f)
in SQL * Plus.
Um die Zeilen einzeln abzurufen, habe ich SET ARRAYSIZE 1
. Die Datensätze (mit Ausnahme des ersten) werden jedoch paarweise abgerufen.
Gibt es eine Erklärung dafür und wie kann ich die Aufzeichnungen erhalten, sobald eine weitergeleitet wird?
Dies scheint eine Eigenart von SQL * Plus zu sein und keine
arraysize
Pipeline-Funktionen - das Folgende zeigt den gleichen Effekt:Sie können das Problem (irgendwie) umgehen, indem Sie die Zeilen zweimal auswählen und jede zweite verwerfen:
quelle