我想遍历 postgresql 数据库列表并从 postgresql 函数中对它们运行一些查询。这是一个代码示例...
CREATE OR REPLACE FUNCTION my_function()
RETURNS VOID AS
$$
DECLARE
db VARCHAR(50); -- this declaration is where the confusion is
BEGIN
FOR db IN
SELECT datname FROM pg_catalog.pg_database WHERE datname ~ '^mydbname_'
LOOP
-- this is just an example
SELECT * FROM db;
END LOOP;
END;
$$
LANGUAGE 'plpgsql';
我知道我可以使用 postgresqlEXECUTE
将查询评估为字符串(例如,EXECUTE 'SELECT * FROM ' || db || ';';
),但我的查询相当长且复杂。
有没有办法在 postgresql 中做到这一点?是否有“数据库”声明类型?