postgresql截断字符串

时间:2017-05-11 16:21:46

标签: postgresql identifier maxlength

我正在使用PostgreSQL上的表返回函数(使用pgAdmin 4)。它曾经运作良好,但由于某种原因,我在尝试修改函数时收到此错误消息:

  

错误:输入“TABLE(id integer,id_scenario integer,date_valid   时间戳       机智“不存在       注意:标识符“TABLE(id integer,id_scenario integer,date_valid       没有时区的时间戳,dni_q95双精度,csp_forecast_q95       双精度,storage_q95双精度)“将被截断为       “TABLE(id integer,id_scenario integer,date_valid timestamp wit”

我理解标识符不能超过63个字节,因此我的代码行会被截断。如果有人可以帮我解决这两个问题,我将非常感激:

  1. 为什么这条线突然被识别为标识符?

  2. 如何解决这个问题,知道我需要返回所有这些列?

  3. 这是函数体:

    CREATE OR REPLACE FUNCTION public.csp_park_95(id_park integer)
    RETURNS SETOF "TABLE(id integer, id_scenario integer, date_valid 
    timestamp without time zone, dni_q95 double precision, csp_forecast_q95 
    double precision, storage_q95 double precision)"
    LANGUAGE 'sql'
    COST 100.0
    VOLATILE 
    ROWS 1000.0
    AS $function$
    
    -- irrelevant code
    
    $function$;
    
    ALTER FUNCTION public.csp_park_95(integer)
    OWNER TO "POC_kacare_admin";   
    

1 个答案:

答案 0 :(得分:0)

尝试删除双引号,如下所示:

CREATE OR REPLACE FUNCTION public.csp_park_95(id_park integer)
    RETURNS TABLE(id integer, id_scenario integer, date_valid 
    timestamp without time zone, dni_q95 double precision, csp_forecast_q95 
    double precision, storage_q95 double precision)
    LANGUAGE 'sql'
    COST 100.0
    VOLATILE 
    ROWS 1000.0
    AS $function$
    -- irrelevant code
    $function$;