如何解决如何制作一个函数,根据 PostgreSQL 中的页面大小和页码计算正确的偏移量?
我正在尝试在 Postgresql 中创建一个函数,该函数将一个 pageSize 和一个页码作为参数,并从中计算偏移量。这让我更轻松地进行分页。
这是我目前所拥有的:
CREATE OR REPLACE FUNCTION calculate_paging(page_size INT,page_number INT)
RETURNS INT AS $calculate_paging$
DECLARE
offset INT;
max_int INT = 2147483647;
BEGIN
offset = CASE WHEN CAST(page_size AS BIGINT) * (page_number - 1) > max_int
THEN max_int
ELSE page_size * (page_number - 1)
RETURN offset
END;
$calculate_paging$ LANGUAGE plpgsql;
这不起作用,我不断收到 synthax 错误。但是思路是计算offset,返回offset值。
解决方法
不考虑函数的真正用途,只关注语法错误:
CREATE OR REPLACE FUNCTION calculate_paging(page_size INT,page_number INT)
RETURNS INT AS $$
DECLARE max_int INT = 2147483647;
BEGIN
IF page_size::bigint * (page_number - 1) > max_int THEN
RETURN max_int;
ELSE
RETURN page_size * (page_number - 1);
END IF;
END;
$$ LANGUAGE plpgsql;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。