postgresql - Postgres 函数不明确的列引用
问题描述
从同一个模板中获得了两个功能:
CREATE OR REPLACE FUNCTION public.rdxi(
mydate date DEFAULT (
(
'now'::text)::date - '1 day'::interval))
RETURNS TABLE("Date" date, "Nom" character varying, "Capacité (TB)" numeric, "Utilisé (TB)" numeric, "Charge (%)" text, "Données protégées (TB)" numeric, "Ratio" numeric)
LANGUAGE 'plpgsql'
COST 100
VOLATILE
ROWS 1000
AS $BODY$
BEGIN
RETURN QUERY
SELECT "rDxi"."Date", "rDxi"."Nom", "rDxi"."Capacité réelle en TB", "rDxi"."Utilisé en TB", "rDxi"."Charge", "rDxi"."Données protégées en TB", "rDxi"."Ratio"
from "rDxi" where "rDxi"."Date" = mydate;
END
$BODY$;
和
CREATE OR REPLACE FUNCTION public."rPower-Chassis-Ram"(
mydate date DEFAULT (
(
'now'::text)::date - '1 day'::interval))
RETURNS TABLE("Date" date, "Id" character varying, "Nom" character varying, "Cpu type" text, "Ram totale (GB)" numeric, "Ram libre (GB)" numeric, "Charge (%)" numeric)
LANGUAGE 'plpgsql'
COST 100
VOLATILE
ROWS 1000
AS $BODY$
BEGIN
RETURN QUERY
SELECT "rPower-Chassis-Ram"."Date", "rPower-Chassis-Ram"."Id", "rPower-Chassis-Ram"."Nom", "rPower-Chassis-Ram"."Type Cpu", "rPower-Chassis-Ram"."Ram Totale", "rPower-Chassis-Ram"."Ram_Libre",
"rPower-Chassis-Ram"."Charge"
from "rPower-Chassis-Ram" where "rPower-Chassis-Ram"."Date" = mydate;
END
$BODY$;
要求第一个时没问题,但要求第二个时我收到以下错误消息:
ERROR: column reference "rPower-Chassis-Ram.Date" is ambiguous
LINE 1: SELECT "rPower-Chassis-Ram"."Date", "rPower-Chassis-Ram"."Id...
^
DETAIL: It could refer to either a PL/pgSQL variable or a table column.
QUERY: SELECT "rPower-Chassis-Ram"."Date", "rPower-Chassis-Ram"."Id", "rPower-Chassis-Ram"."Nom", "rPower-Chassis-Ram"."Type Cpu", "rPower-Chassis-Ram"."Ram Totale", "rPower-Chassis-Ram"."Ram_Libre",
"rPower-Chassis-Ram"."Charge"
from "rPower-Chassis-Ram" where "rPower-Chassis-Ram"."Date" = mydate
CONTEXT: PL/pgSQL function "rPower-Chassis-Ram"(date) line 3 at RETURN QUERY
État SQL :42702
不知道在哪里调查,尝试更改函数的名称(替换 - 由_),尝试使用没有特殊字符的通用名称重命名,但没有办法......
解决方案
名称冲突发生在funcrion 参数和列名之间。
最简单的解决方案是避免名称冲突,例如通过调用OUT
参数p_date
。
或者,您可以使用表别名:
SELECT t."Date"
FROM aschema."SillyTableName" AS t
...
推荐阅读
- vue.js - 通过 JavaScript 获取/设置 loadOnDemandBufferSize 或 loadMoreDataRequested
- algorithm - 使用 Lloyd 算法进行锚定分区
- java - 布尔值在应该为假时报告为真
- c++ - 如何找到最能描述一组点的线?
- python - 如何在 Python 中将“and”与条件一起使用?
- scala - 上限类型绑定多态方法Scala
- group-by - Pyspark 计数器字段,groupby 并递增 1
- php - Propel 没有自动加载模型类,为什么?
- ansible - 如何解决弃用问题?
- r - 如何在 ggplot2 中绘制 entropart 多样性配置文件