我正在尝试在 plpgsql 中创建一个函数,例如:
CREATE OR REPLACE FUNCTION select_left_photo_ids(in_photo_id bigint[], in_album_id bigint, in_limit int) RETURNS SETOF bigint[] AS
$$
DECLARE photo_count int;
DECLARE photo_ids bigint[];
BEGIN
SELECT photo_id INTO STRICT photo_ids FROM tbl_album_photos WHERE album_id = in_album_id AND photo_id < in_photo_id ORDER BY photo_id DESC LIMIT in_limit;
GET DIAGNOSTICS photo_count = ROW_COUNT;
IF photo_count < in_limit THEN
SELECT photo_id INTO STRICT photo_ids FROM (SELECT photo_id FROM tbl_album_photos WHERE album_id = in_album_id ORDER BY photo_id LIMIT in_limit) AS dummy ORDER BY photo_id DESC;
END IF;
RETURN photo_ids;
END;
$$
LANGUAGE plpgsql;
这个想法是获取大于输入照片 ID 的照片 ID。如果没有。结果中的照片数量少于限制,我将尝试获取底部的 n 条记录。
上述功能不起作用。有人可以就如何将选择查询的结果存储在变量中提供一些指针/提示或链接。
注意: photo_id 是一种bigint[]
数据类型 - 我的意思是它是故意的bigint[]
。