我有一个函数,我想通过一个字符可变变量生成一个动态查询,我这样做(例如(:
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;