错误查询4082的结构不匹配函数的结果类型
问题描述:
即时通讯新的postgre和IM试图写下面的代码存储过程:错误查询4082的结构不匹配函数的结果类型
CREATE OR REPLACE FUNCTION public.get_month_status()
returns table (request_detail character varying, request_detail2 character
varying, request_detail3 character varying)
language plpgsql stable
as $function$
BEGIN
return query
select
CASE
WHEN (extract(DAY FROM now()) >= 25) THEN (extract(MONTH FROM now()) || '-' || extract(Year FROM now()))
ELSE (extract(MONTH FROM now()) - 1 || '-' || extract(Year FROM now()))
end,
CASE
WHEN (extract(month FROM now()) = 2) THEN (extract(month FROM now()) -1 || '-' || extract(Year FROM now()))
ELSE (extract(month FROM now()) || '-' || extract(Year FROM now()))
end,
CASE
WHEN (extract(month FROM now()) = 1) THEN (extract(month FROM now() - interval '2 months') || '-' || extract(Year FROM now()) -1)
ELSE (extract(month FROM now()) || '-' || extract(Year FROM now()))
end;
end;
$function$;
但每当我试图用select * from get_month_status()
执行条命令,但我得到一个错误说
SQL Error [42804]: ERROR: structure of query does not match function result type
Detail: Returned type text does not match expected type character varying in column 1.
Where: PL/pgSQL function get_month_status() line 3 at RETURN QUERY
org.postgresql.util.PSQLException: ERROR: structure of query does not match
function result type
Detail: Returned type text does not match expected type character varying in column 1.
Where: PL/pgSQL function get_month_status() line 3 at RETURN QUERY
我如何使它工作?有人帮忙!
答
错误消息说,什么是错的:
返回文本类型不匹配,期望类型的字符改变
只是改变返回表的列类型text
和重建功能
... returns table (request_detail text, request_detail2 text, request_detail3 text) ...
愚蠢的我,非常感谢你的先生:) – PinballWizard