gpt4 book ai didi

function - 在postgresql函数中循环遍历数据库

转载 作者:行者123 更新时间:2023-11-29 12:47:29 61 4
gpt4 key购买 nike

我想遍历 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';

我知道我可以使用 postgresql 的 EXECUTE 将查询评估为字符串(例如,EXECUTE 'SELECT * FROM ' || db || ';';),但我的查询相当长且复杂。

有没有办法在 postgresql 中做到这一点?是否有“数据库”声明类型?

最佳答案

您不能在查询中直接将变量用作对象名称(数据库、表、列)。您必须使用 EXECUTE。

这无论如何都行不通,因为您不能进行跨数据库查询。从客户端执行此操作或查看使用 dblink。有一个 SQL/MED(外部数据包装器)的实现,但奇怪的是我不认为有 PostgreSQL wrapper yet .

关于function - 在postgresql函数中循环遍历数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076027/

61 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com