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
相关产品推荐
相关产品推荐

