sql - pl pgsql 使用变量值移动

标签 sql postgresql plpgsql

我有以下使用游标实现分页的函数。函数接受参数 i_limiti_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/

相关文章:

java - 无法持久保存分离的对象

postgresql - 使用 dblink 复制新数据的函数中出现语法错误

sql - 选择 COUNT(*) 有时返回 0,有时不返回任何内容

postgresql - 如何在 postgresql 插入查询中插入当前日期时间

mysql - 水平列出 mysql 行值而不旋转

postgresql - Cast 产生 'Returned type character varying does not match expected type character varying(8)'

function - Postgres 函数结束循环并返回错误

sql - PL/pgSQL 返回 SETOF 记录错误

mysql - SQL游戏区查询

php - 我怎样才能找到我的查询的第二个最大值