You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL函数转换表数据为JSON时类型不匹配报错求助

解决PostgreSQL函数返回JSON时的类型不匹配错误

你的函数声明返回的是TABLE结构(包含多个指定类型的字段),但实际执行的查询返回的是单个json类型的结果,两者类型完全不匹配,因此触发42804错误(返回类型与函数定义的结果类型不一致)。

以下是两种针对性的解决方案:

方案1:返回整个表的JSON数组

将函数返回类型改为json,直接返回包含所有行数据的JSON数组:

CREATE OR REPLACE FUNCTION "Dcep".jsontechnologies()
RETURNS json
LANGUAGE sql AS 
$BODY$
    SELECT array_to_json(array_agg(row_to_json(t)))
    FROM "Dcep"."Technologies" t;
$BODY$;
ALTER FUNCTION "Dcep".jsontechnologies() OWNER TO postgresql;

注:改用sql语言实现更简洁,无需plpgsql的BEGIN/END包裹。

方案2:逐行返回JSON对象

如果需要每行数据对应一个独立的JSON对象(返回多行结果),将返回类型改为SETOF json:

CREATE OR REPLACE FUNCTION "Dcep".jsontechnologies()
RETURNS SETOF json
LANGUAGE sql AS 
$BODY$
    SELECT row_to_json(t)
    FROM "Dcep"."Technologies" t;
$BODY$;
ALTER FUNCTION "Dcep".jsontechnologies() OWNER TO postgresql;

内容的提问来源于stack exchange,提问作者Nithesh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:27:11