【发布时间】:2018-11-08 02:35:59
【问题描述】:
我正在做一个基本的json_to_recordset 查询,据我所知,它遵循the docs 中的模式。但我收到一个我不明白的错误。 (我会在代码示例之后总结我的研究。)
select my_schema.my_func(2, 2366800)
=> my_func
json
----------------------------------------------------
[{"col_a":"...", "col_b":"...", "col_c":"..."}, ...]
select *
from json_to_recordset(my_schema.my_func(2, 2366800))
as results (col_a TEXT,
col_b TEXT,
col_c NUMERIC(10,2))
=> ERROR: set-valued function called in context that cannot accept a set
除了文档之外,我还对json_to_recordset 的其他示例进行了查询。 (1, 2, 3) 据我所知,我的查询应该有效。
我已经查看了 set-valued function 错误。 (1、2、3;甚至是4,上面写着“当函数返回 SETOF 时,您需要将其视为表格。”)不幸的是,我没有找到任何解释为什么这个错误会发生在这个特定的查询中。
【问题讨论】:
-
一切都表明函数定义不正确。如果它返回
setof json,请将其更改为json。或者编辑问题并显示函数。 -
@klin 发现:函数的返回类型是
setof json。我没有太多使用函数,所以我需要弄清楚如何适当地修改函数——或者如何将setof json转换为json。 (函数以RETURN QUERY select array_to_json(...) ...开头,所以我需要学习如何在没有QUERY的情况下重写它。)谢谢!
标签: postgresql