0

我有一个连接到远程数据库的查询,并在函数中带回结果位,如下所示。

CREATE OR REPLACE FUNCTION get_users()
$BODY$   
BEGIN
    RETURN QUERY
SELECT c.user_id, c.user_name, c.user_subscrib 
FROM dblink('remote_db1', 'select user_id,  user_name, user_subscrib from users_tbl') 
AS c(user_id int, user_name varchar, user_subscrib varchar);

END;
$BODY$;
LANGUAGE plpgsql;

一旦这个函数被调用,就像select * from get_users();它返回连接到远程数据库的内部查询的结果一样,执行并方便地返回结果。我的问题是,我必须关闭 dblink 还是会自动关闭?

预先感谢您的帮助。

4

2 回答 2

3

假设您以前使用 dblink_connect 连接并将连接命名为“remote_db1”,那么您将需要对命名连接执行 dblink_disconnect。

PostgreSQL 数据库链接

如果您包含连接字符串本身而不是使用命名连接,则连接将仅持续查询时间,然后自行关闭。

于 2013-06-12T00:08:48.760 回答
1

我正在回答这个问题。是的,它会自动关闭连接。当您在查询中将 dblink 命名为您的连接时,您不需要显式使用 db_link 连接/断开连接,如上所示。

于 2013-08-12T13:47:43.917 回答