[英]postgresql: relation does not exist
我是使用 pl pgsql 的新手,下面的伪代码出现此错误:
关系“Client.seniority_day”不存在
请问如何解决?
代码
DROP FUNCTION IF EXISTS table_sen_seniority;
CREATE OR REPLACE FUNCTION Client.table_sen_seniority(granularity text, OUT max_date date)
RETURNS record
LANGUAGE plpgsql
AS $function$
declare
table_sen text := 'Client.seniority'||granularity;
BEGIN
execute format('SELECT MIN(dat_sub) FROM %I', table_sen) INTO subscription_from;
execute format('SELECT FROM %I WHERE date_ >= $1', table_sen) using subscription_from;
END;
$function$
;
更新
execute format('SELECT FROM %I WHERE date_ >= $1', table_sen) using subscription_from;
您需要传递架构和表:
table_sen text := 'seniority'||granularity;
execute format('SELECT MIN(dat_sub) FROM %I.%I', 'Client', table_sen)
INTO subscription_from;
请注意, "Client"
和client
将是不同的架构名称。
您的代码导致
SELECT MIN(dat_sub) FROM "Client.seniority_day"
它将整个字符串视为表名,而不是在名为client
的模式中名为seniority_day
的表。
你应该这样做:
DECLARE
table_sen text := 'seniority' || granularity;
BEGIN
EXECUTE format('SELECT MIN(dat_sub) FROM %I.%I', 'client', table_sen)
INTO subscription_from;
这将导致
SELECT MIN(dat_sub) FROM client.seniority_day
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.