如何创建一个函数来根据 PostgreSQL 中的页面大小和页码计算正确的偏移量?

How do I make a function that calculates the correct offset based on a pagesize and a page number in 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;

这不起作用,我不断收到语法错误。但是思路是计算偏移,return偏移值

不考虑函数的真正用途,只关注语法错误:

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;