我试图获得一个psql函数,如果存在的话,它将截断给定的表名。我一直在尝试多种功能,但到目前为止它们都没有起作用。这是代码:
CREATE OR REPLACE FUNCTION truncateIfExists(tableName TEXT)
returns void
as $$
BEGIN
EXECUTE format(
'IF EXISTS (
SELECT *
FROM information_schema.tables
WHERE table_name =' || tableName || '
)
THEN
TRUNCATE tableName;
END IF;
');
END;
$$language plpgsql
现在,我可以使它在一个简单的过程中使用一个统一的名称工作:
do $$
begin
IF EXISTS (SELECT *
FROM information_schema.tables
WHERE table_name = genre_epf)
THEN
TRUNCATE genre_epf;
END IF;
end
$$;
但是我无法确定如何混合使用两个查询。我在这里做错了什么?
TRUNCATE tableName;
。您正在试图截断命名表tableName
,