使用 EXECUTE format( ... ) USING (param1, param2) 时没有参数 $2
No parameter $2 when using EXECUTE format( ... ) USING (param1, param2)
我正在尝试在 postgres 函数中使用 EXECUTE format( ... ) USING (param1, param2, ... ) 功能。相关代码片段如下
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(,)
group by attr
order by agg desc ) x', columnNames[1])
USING (param1, param2)
在哪里
columnNames[1], param1, & param2
之前在函数中定义过。事实上,param1 和 param2 是函数的输入,并在函数体的开头声明(如果相关的话)。
DECLARE
param1 ALIAS FOR ;
param2 ALIAS FOR ;
当然,我并没有实际调用参数的 param1 或 2,schema_name.seperate_function 也不是这段代码所引用的实际函数名称。无论如何,当我执行此操作时,出现以下错误:
ERROR: there is no parameter
LINE 4: ... from schema_name.seperate_function(,)
相反,如果我将格式化查询字符串中的 $2 替换为硬编码值,并从 USING 子句中删除 param2,则效果很好。最初,我认为它与语法相关,但在查看 The accepted answer here
之后
例如,我没有发现我的语法有任何问题。如有任何建议,我们将不胜感激,谢谢。
您将第 (param1, param2)
行作为第一个参数传递,然后没有第二个参数。如果将 </code> 替换为硬编码值并保留 <code>(param1, param2)
,您将看到它将行传递到 </code> 而不是 <code>param1
.
你需要做的是:USING param1, param2
没有括号。
我正在尝试在 postgres 函数中使用 EXECUTE format( ... ) USING (param1, param2, ... ) 功能。相关代码片段如下
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(,)
group by attr
order by agg desc ) x', columnNames[1])
USING (param1, param2)
在哪里
columnNames[1], param1, & param2
之前在函数中定义过。事实上,param1 和 param2 是函数的输入,并在函数体的开头声明(如果相关的话)。
DECLARE
param1 ALIAS FOR ;
param2 ALIAS FOR ;
当然,我并没有实际调用参数的 param1 或 2,schema_name.seperate_function 也不是这段代码所引用的实际函数名称。无论如何,当我执行此操作时,出现以下错误:
ERROR: there is no parameter
LINE 4: ... from schema_name.seperate_function(,)
相反,如果我将格式化查询字符串中的 $2 替换为硬编码值,并从 USING 子句中删除 param2,则效果很好。最初,我认为它与语法相关,但在查看 The accepted answer here
之后例如,我没有发现我的语法有任何问题。如有任何建议,我们将不胜感激,谢谢。
您将第 (param1, param2)
行作为第一个参数传递,然后没有第二个参数。如果将 </code> 替换为硬编码值并保留 <code>(param1, param2)
,您将看到它将行传递到 </code> 而不是 <code>param1
.
你需要做的是:USING param1, param2
没有括号。