如何在postgreSQL中返回中间结果


CREATE OR REPLACE FUNCTION get_all_foo() RETURNS SETOF int AS
$BODY$
DECLARE
i int;
begin
i=1;
LOOP
RETURN NEXT f(i);--assume f() cost one second to return
i=i+1;
EXIT when i>1000;
END LOOP;
RETURN;
END
$BODY$
LANGUAGE plpgsql;

现在,如果我调用get_all_foo((,我将花费1000秒才能看到最终结果。然而,我希望中间结果f(I(是可见的,但如何呢?

附言:我期望以下输出

1秒时:f(1(

2秒时:2行

f(1(

f(2(

3秒时:3行

f(1(

f(2(

f(3(

4秒:4行。。。

提前感谢:(

PL/pgSQL将结果行缓存在元组存储中,因此您必须等到函数完成。如果您在C.中编写函数,可能有一种方法可以立即返回行

最新更新