【发布时间】:2018-08-29 13:24:42
【问题描述】:
我正在尝试在 postgres 函数中使用 EXECUTE format( ... ) USING (param1, param2, ... ) 功能。代码的相关sn-p如下
EXECUTE format('select json_agg(json_build_object(''Attribute'', x.attr, ''Aggregate'',x.agg))
from
( select %I as attr, round(sum(value),6) as agg
from schema_name.seperate_function($1,$2)
group by attr
order by agg desc ) x', columnNames[1])
USING (param1, param2)
在哪里
columnNames[1], param1, & param2
之前在函数中定义。事实上, param1 和 param2 是函数的输入,并在函数体的开头声明,如果这完全相关的话。
DECLARE
param1 ALIAS FOR $1;
param2 ALIAS FOR $2;
当然,我实际上并没有调用参数的 param1 或 2,schema_name.seperate_function 也不是这段代码引用的实际函数名。无论如何,当我执行此操作时,我收到以下错误:
ERROR: there is no parameter $2
LINE 4: ... from schema_name.seperate_function($1,$2)
如果相反,如果我将格式化查询字符串中的 $2 替换为硬编码值,并从 USING 子句中删除 param2,它就可以正常工作。起初我以为是语法相关,但看了The accepted answer here
例如,我认为我的语法没有任何问题。任何建议都将不胜感激,谢谢。
【问题讨论】:
标签: postgresql execute using-statement