错误查询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) ... 
+0

愚蠢的我,非常感谢你的先生:) – PinballWizard