【发布时间】:2020-08-08 04:06:09
【问题描述】:
我正在尝试在 PostgreSQL 上创建一个函数,但在使用局部变量时遇到了一些问题。这是我的代码:
DECLARE query RECORD;
DECLARE schema_name TEXT;
BEGIN
FOR query IN SELECT * FROM context WHERE created_at + make_interval(days => duration) <= CURRENT_TIMESTAMP LOOP
SELECT lower(quote_ident(query.title)) INTO schema_name;
DROP SCHEMA schema_name CASCADE;
DELETE FROM context WHERE id = query.id;
END LOOP;
RETURN 1;
END;
$$ LANGUAGE plpgsql;
select 和 delete 查询工作正常,我做了一个返回 schema_name 变量值的测试,没问题。
我的问题在于这一行:
DROP SCHEMA schema_name CASCADE;
我收到一条错误消息,因为“架构 'schema_name' 不存在”。 对于如何使用此变量进行放置查询的任何想法,我将不胜感激。
【问题讨论】:
-
不相关,但是:您只需要一个
DECLARE块用于所有变量。每个变量不是一个块。
标签: postgresql function schema plpgsql dynamic-sql