【问题标题】:Query inside a PostgreSQL function does not recognize its parametersPostgreSQL 函数内的查询无法识别其参数
【发布时间】:2021-11-21 16:51:58
【问题描述】:

我有一个函数,我想通过一个字符可变变量生成一个动态查询,我这样做(例如):

my_var character varying := 'SELECT * FROM table WHERE table.column = param_name';

当我运行我的函数并到达指令时:

EXECUTE my_var INTO result_var;

我得到了错误

错误:列«param_name»不存在

注意:我已经反复检查查询中的param_name 是否与参数名称匹配

【问题讨论】:

标签: string postgresql runtime-error plpgsql


【解决方案1】:

使用占位符,然后使用USING 子句传递实际参数值:

declare
  my_var text := 'SELECT * FROM table WHERE table.column = $1';
  my_parameter int := 42;
  result_var int;
begin
  execute my_var 
    using my_parameter;

但是,您的示例确实表明需要execute 动态SQL)。您可以轻松地将其完全删除:

SELECT * 
  into result_var
FROM table 
WHERE table.column = my_parameter;

【讨论】:

  • 非常感谢,它成功了。我放置的代码只是我的问题的一个例子。真正的查询非常大,我必须根据其他一些参数添加条件,解释和阅读会很长
猜你喜欢
  • 1970-01-01
  • 2018-11-19
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多