【发布时间】:2014-05-23 19:23:29
【问题描述】:
我正在创建一个 Postgresql 函数来处理负偏移量。当偏移量为负时,我的函数应该返回 0。但是,当我尝试运行此函数时,“行”附近有一个错误,我不知道为什么。我的条件分支出了什么问题?
CREATE OR REPLACE FUNCTION
calc_offset(row integer, padding integer) RETURNS integer AS $$
BEGIN
if (row-1-padding) < 0 then return 0;
else return (row-1-padding);
END;
$$ LANGUAGE plpgsql;
WITH all_the_trimmings AS (
SELECT ui.id, ui.name, ui.time,
row_number() over(order by name asc) as rownumber
FROM user_infos ui
), my_row AS (
SELECT * FROM all_the_trimmings WHERE id=1
), the_slice AS (
SELECT * FROM all_the_trimmings LIMIT 5
OFFSET calc_offset((SELECT rownumber FROM my_row)::int,2)
)
SELECT * from my_row
UNION ALL
SELECT * from the_slice;
【问题讨论】:
标签: sql function postgresql offset plpgsql