plpgsql 函数为基于行的租赁创建序列?

plpgsql function creates sequences for row based tenancy?

尝试创建一个函数来查找具有特定名称的序列(如果不存在)应该创建它。然后returns序列的函数值。似乎不起作用的部分功能是它测试序列是否已经存在的地方。下面是函数代码

CREATE OR REPLACE FUNCTION public."tenantSequence"(
    vtenantid integer,
    vtablename character)
  RETURNS bigint AS
$BODY$DECLARE 
  vSeqName character varying;
  vSQL character varying;   
BEGIN   
  select ('t' || trim(to_char(vtenantid,'0000')) || vtablename) INTO vSeqName;
  if not exists(SELECT 0 FROM pg_class where relkind = 'S' and relname = vSeqName )
  then 
    vSQL := 'create sequence '||vSeqName||';';
    execute vSQL;
  ELSE
    return 0;
  end if;
  return nextval(vSeqName) * 10000 + vtenantid;
END$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION public."tenantSequence"(integer, character)
  OWNER TO postgres;

问题是 a_horse_with_no_name

提到的情况

更改了将 vSeqName 分配给以下行

vSeqName :=  lower('t' || trim(to_char(vtenantid,'0000')) || vtablename);

现在功能按预期运行。