我有以下使用游标实现分页的函数。函数接受参数 i_limit
和 i_offset
。
begin
-- Search resources.
select into found_keys trgm_search_resources(i_search_query);
-- Open cursor
open master_event_curs(found_keys);
-- Reposition cursor if the @i_offset is specified
-- TODO: Replace 5 with variable
move forward i_offset in master_event_curs;
-- Limit number of retrieved items
loop
exit when i >= i_limit;
-- Fetch data to the record
fetch master_event_curs into recordvar;
exit when not found;
i = i + 1;
-- Return master event info.
return next (select get_master_event_info(recordvar."master_event_uid" :: bigint, i_return_langs));
end loop;
-- Return info of found master events.
return;
end;
当我在 master_event_curs 中使用 moveforward 5
时,一切正常,但是当我尝试用动态 i_offset
变量替换 5 时,SQL 显示语法错误 {char} 意外
。
我尝试使用显式转换,使用 execute
语句执行此命令,但没有任何效果。
有人可以给我提示如何执行此操作吗?
最佳答案
使用execute format() :
execute format('move forward %s in master_event_curs', i_offset);
关于sql - pl pgsql 使用变量值移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51129336/