我有一段代码:
do $$
declare
port int;
dbname varchar;
begin
select current_database() into dbname;
select setting into port from pg_catalog.pg_settings where name = 'port';
perform format ('select dblink_connect(''toto'', ''port=%s dbname=%s'')', port, dbname);
perform dblink_disconnect('toto');
end $$;但当我运行它时,当我试图断开它时,它会提示我的“toto”连接不存在。
我尝试了多种方法,但都不起作用。我想我的dblink_connect出了点问题,不知何故它不能建立连接。
谢谢你的帮助。
发布于 2021-11-23 16:11:37
您执行格式化函数,获得一个看起来像SQL查询的文本结果,然后将其丢弃。因为这就是PERFORM所做的。
也许您打算执行该字符串,而不是将其丢弃。但在我看来,没有理由在这里使用动态查询。你也可以在静态查询中使用"format“。
do $$
declare
port int;
dbname varchar;
begin
select current_database() into dbname;
select setting into port from pg_catalog.pg_settings where name = 'port';
perform dblink_connect('toto', format('port=%s dbname=%s', port, dbname));
perform dblink_disconnect('toto');
end $$;https://stackoverflow.com/questions/70083613
复制相似问题