【发布时间】:2017-05-11 16:21:46
【问题描述】:
我正在使用 PostgreSQL 上的表返回函数(使用 pgAdmin 4)。它曾经运行良好,但由于某种原因,我在尝试修改函数时收到此错误消息:
错误:类型“表(id 整数,id_scenario 整数,date_valid 时间戳 机智”不存在 注意:标识符“表(id 整数,id_scenario 整数,date_valid 没有时区的时间戳,dni_q95 双精度,csp_forecast_q95 双精度,storage_q95 双精度)”将被截断为 "TABLE(id integer, id_scenario integer, date_valid timestamp wit"
我知道标识符不能超过 63 个字节,所以我的代码行被截断了。如果有人能帮助我解决这两个问题,我将不胜感激:
为什么这行突然被识别为标识符?
知道我需要返回所有这些列,如何规避这个问题?
这是函数体:
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";
【问题讨论】:
-
"为什么这行突然被识别为标识符?"因为双引号是标识符:postgresql.org/docs/current/static/…
标签: postgresql identifier maxlength