PostgreSQL从存储函数访问多个数据库

Posted

技术标签:

【中文标题】PostgreSQL从存储函数访问多个数据库【英文标题】:PostgreSQL Accessing multiple database from stored function 【发布时间】:2010-12-08 10:14:12 【问题描述】:

我想从 postgresql 存储函数访问不同的数据库。

例如:

CREATE OR REPLACE FUNCTION test ()  RETURNS SETOF volume AS
$BODY$

SELECT * FROM db2.volume
ORDER BY db2.volume.volumeID

$BODY$  
LANGUAGE sql STABLE  
COST 100  
ROWS 1000;

任何意见都会有很大帮助。

问候, 玛纳斯

【问题讨论】:

【参考方案1】:

你需要的是 database link

【讨论】:

好吧,但是在 db 链接中我可以在运行时更改数据库名称。 为什么不呢? SELECT dblink_connect('conn', 'dbname=yourdb'); CREATE OR REPLACE FUNCTION 测试(dbname 字符不同)返回 SETOF 卷作为 $BODY$ SELECT * FROM dblink_connect('dbname=$1') ORDER BY db2.volume.volumeID $BODY$ LANGUAGE sql STABLE COST 100 行 1000;

以上是关于PostgreSQL从存储函数访问多个数据库的主要内容,如果未能解决你的问题,请参考以下文章

Postgresql 存储结构

PostgreSQL之SQL函数介绍及实践

PostGIS总结

PostgreSQL在存储函数中获取和释放LOCK

PostgreSQL:在 plpgsql 函数中回滚事务?

postgresql中带有临时表的存储函数