我正在尝试获取一个 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
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用硬编码名称使其在一个简单的过程中工作:
do $$
begin
IF EXISTS (SELECT *
FROM information_schema.tables
WHERE table_name = genre_epf)
THEN
TRUNCATE genre_epf;
END IF;
end
$$;
Run Code Online (Sandbox Code Playgroud)
但是我无法理解如何混合这两个查询。我在这里做错了什么?