【发布时间】:2021-05-21 11:03:30
【问题描述】:
我想像 python 生成器一样按顺序从 PostgreSQL 数据库中给出结果。 当每次我想从行中返回新的 10 行时调用函数 get_data。
我定义了一个名为an_iter的序列,它增加了10:
create sequence an_iter
increment by 10;
我的计划是创建一个函数
- 将序列增加 10
- 返回大于 序列的当前值(限制为 10)
我的函数定义:
CREATE OR REPLACE FUNCTION public.get_data()
RETURNS SETOF ppdb
LANGUAGE plpgsql AS
$func$
declare
val integer := 0;
BEGIN
select nextval('an_iter') into val;
Return Query SELECT * from ppdb where i<= val+10 limit 10;
END
$func$;
虽然我调用了函数,但返回的结果集相同。
【问题讨论】:
-
select nextval('an_iter') into val;可以简化为val := nextval('an_iter');(这样效率也更高)
标签: postgresql function transactions sequence plpgsql