You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PL/pgSQL中使用cursor实现分页,每次返回5条film表数据

PL/pgSQL函数实现方案

你现有代码存在以下核心问题:

  • 操作的表和函数逻辑与需求不符,现有代码查询giuser表,需求是操作film表
  • 返回值定义为void但代码尝试返回查询结果,类型不匹配
  • 单次拉取条数设置为10,不符合每次返回5条的要求
  • 没有实现无参数调用的逻辑

完整可运行代码

-- 无参数版本:返回排序后的前5条数据
CREATE OR REPLACE FUNCTION get_film_batch()
RETURNS SETOF film AS $$
BEGIN
    RETURN QUERY
    SELECT * FROM film
    ORDER BY code ASC
    LIMIT 5;
END;
$$ LANGUAGE plpgsql;

-- 带参数版本:传入上次查询的最后一条code值,返回对应下5条数据
CREATE OR REPLACE FUNCTION get_film_batch(last_code text)
RETURNS SETOF film AS $$
BEGIN
    RETURN QUERY
    SELECT * FROM film
    WHERE code > last_code
    ORDER BY code ASC
    LIMIT 5;
END;
$$ LANGUAGE plpgsql;

调用方式

  • 首次调用取前5条:SELECT * FROM get_film_batch();
  • 后续分页调用,传入上一次返回结果中最后一条的code值即可,例如:SELECT * FROM get_film_batch('P_302');

说明

默认按code字段升序排序做分页,如果需要按其他字段(比如上映日期、时长)排序,修改两个函数中ORDER BY后面的字段即可。

内容的提问来源于stack exchange,提问作者R.Vijayakumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:54:03