postgresql截断字符串
我正在使用PostgreSQL上的表返回函数(使用pgAdmin 4)。它过去工作正常,但由于某些原因,我在尝试修改函数时收到以下错误消息: 错误:键入“表(id整数、id\u方案整数、日期\u有效 时间戳 “智慧”是不存在的 注意:标识符”表(id整数、id\u方案整数、日期\u有效 无时区时间戳、dni_q95双精度、csp_预测_q95 双精度,存储“q95双精度)”将被截断为 表(id整数、id\u方案整数、日期\u有效时间戳) 我知道标识符不能超过63字节,因此我的代码行被截断。如果有人能在以下两个问题上帮助我,我将不胜感激:postgresql截断字符串,postgresql,identifier,maxlength,Postgresql,Identifier,Maxlength,我正在使用PostgreSQL上的表返回函数(使用pgAdmin 4)。它过去工作正常,但由于某些原因,我在尝试修改函数时收到以下错误消息: 错误:键入“表(id整数、id\u方案整数、日期\u有效 时间戳 “智慧”是不存在的 注意:标识符”表(id整数、id\u方案整数、日期\u有效 无时区时间戳、dni_q95双精度、csp_预测_q95 双精度,存储“q95双精度)”将被截断为 表(id整数、id\u方案整数、日期\u有效时间戳) 我知道标识符不能超过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";
尝试删除双引号,如下所示:
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$;
这不是pgAdmin中的错误。双引号用于标识。因此
“表(id整数、id\u场景整数、日期\u无时区的有效时间戳、dni\u q95双精度、csp\u预测\u q95双精度、存储\u q95双精度)”
是一个名称,而不是名称和参数列表。是的,我知道。但如果我正确理解问题“表(id整数、id\u场景整数、日期\u无时区的有效时间戳、dni\u q95双精度、csp\u预测\u q95双精度、存储\u q95双精度)”
不是op想要的,他说:“2)知道我需要返回所有这些列后,如何避免这个问题?”。无论如何,我编辑了我的答案,以避免pgAdmin4的错误猜测。非常感谢,在删除双引号后它仍然有效:)抱歉,如果我的问题有点幼稚,我是postgresql新手。“为什么这一行突然被识别为标识符?”因为双引号用于标识符: