sql - 如何创建一个基于 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;
这不起作用,我不断收到合成错误。但想法是计算偏移量并返回偏移量值。
解决方案
不考虑函数的真正目的而只关注语法错误:
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;
推荐阅读
- python - pandas df中的多重逻辑比较
- formatting - 如何在记事本++中的适当字符之间自动添加空格
- python - 如何使用 python 将图像中的人脸保存到 AWS Rekognition 上的集合中
- svelte - How is the script tag scoped for individual pages in Svelte/Sapper?
- react-native - 在本机反应中使用多行自动增长文本输入
- python - 为python的人脸识别设置训练数组尺寸
- java - 需要在 Amazon Java SDK 的 putObject() 之后关闭 InputStream?
- sql - 如何在 SQL 中将 varchar 转换为图像数据类型?
- powershell - 尝试加载 powershell 库失败
- r - 将单选按钮链接到闪亮的反应数据