小编Sta*_*ica的帖子

Postgres:截断如果存在于带有参数的 psql 函数中

我正在尝试获取一个 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)

但是我无法理解如何混合这两个查询。我在这里做错了什么?

postgresql functions

10
推荐指数
1
解决办法
7653
查看次数

标签 统计

functions ×1

postgresql ×1