PostgreSQL函数内部的查询无法识别其参数



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

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

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

EXECUTE my_var INTO result_var;

我得到错误

错误:列«param_name»不存在

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

使用占位符,然后通过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;

最新更新