是否可以在更改Limit和offset的值时循环遍历postgres。我想循环直到达到关系表的末尾。我想动态设置Limit和offset的原因是我的虚拟内存很少,因此我的进程被杀死了。
目前,我采取的方法是手动设置限制和偏移的值。
select * from my_relational_table limit 1000 offset 0;
select * from my_relational_table limit 1000 offset 1000;
select * from my_relational_table limit 1000 offset 2000;
是否可以在postgres中自动执行该过程,以便在到达关系表的末尾时循环停止。
答案 0 :(得分:2)
是的,有可能。您可以使用游标和命令FETCH。
示例:
postgres=# begin read only;
BEGIN
postgres=# declare xx cursor for select * from generate_series(1,100);
DECLARE CURSOR
postgres=# fetch 2 xx;
generate_series
-----------------
1
2
(2 rows)
postgres=# fetch 2 xx;
generate_series
-----------------
3
4
(2 rows)
postgres=# fetch 2 xx;
generate_series
-----------------
5
6
(2 rows)
postgres=# fetch 2 xx;
generate_series
-----------------
7
8
(2 rows)
postgres=# commit;
COMMIT