我有一个连接到远程数据库的查询,并将结果返回到函数中,如下所示。
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还是会自动关闭?
提前感谢您的帮助。
答案 0 :(得分:2)
假设您之前已使用dblink_connect连接并命名连接“remote_db1”,那么您需要在命名连接上执行dblink_disconnect。
如果您包含连接字符串本身而不是使用命名连接,那么连接只会持续与查询一样长,然后自行关闭。
答案 1 :(得分:0)
我正在回答这个问题。 是的,它会自动关闭连接。如上所示,在命名dblink连接查询时,不需要显式使用db_link connect / disconnect。