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

标签 function postgresql

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

相关文章:

sql - 是否可以在 postgresql 中合并结果?

sql - If/Else 语句中的 Golang Postgres 语法错误

javascript - 某些函数中的 JS/JQuery 全局数组错误

javascript - Ionic 2内部函数和外部函数

c++ - 是否可以将任何类型的函数存储在一个变量中?

postgresql - 使用 plpgsql 将列 bytea 更改为各种版本的 Postgres 中的文本

java - SQL query.setParameter() 未在 Java 中获取单引号字符串

python - 在 Google App Engine 中使用自制函数

python - 暴露 __main__

postgresql - 计算大表中的未读新闻