繁体   English   中英

postgresql:关系不存在

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM