要使用的连接名字。
如果真(忽略时缺省)那么在连接的远程端抛出的错误也会导致本地抛出错误, 如果假,那么远程错误在本地作为NOTICE被报告, 并且函数没有返回行。
一个异步查询(也就是说,返回行的SQL语句),
该函数返回通过查询产生的行。要使用该函数,你将需要指定预期的字段集,
正如前面讨论的dblink
。
一个异步命令(也就是说,没有返回行的SQL语句), 该函数返回带有该命令的状态字符串的单文本列的单一行。 声明结果将在调用FROM子句中有单一文本列。
如果dblink_send_query
返回1,那么必须调用该函数。
它必须被每一个查询调用,并且一个额外时间来获取空集结果,
连接之前可以再次使用。
当在返回它到本地查询处理器之前使用dblink_send_query
和
dblink_get_result
, dblink抓取
整个远程查询结果。如果查询返回大量行,那么
这可以导致本地会话短暂内存膨胀。它可以更好的打开这个查询比如使用dblink_open
的游标,
然后抓取每次可管理的行数。另外,使用普通的dblink()
通过多任务缓冲处理大量结果集到磁盘避免内存膨胀。
contrib_regression=# SELECT dblink_connect('dtest1', 'dbname=contrib_regression'); dblink_connect ---------------- OK (1 row) contrib_regression=# SELECT * FROM contrib_regression-# dblink_send_query('dtest1', 'select * from foo where f1 < 3') AS t1; t1 ---- 1 (1 row) contrib_regression=# SELECT * FROM dblink_get_result('dtest1') AS t1(f1 int, f2 text, f3 text[]); f1 | f2 | f3 ----+----+------------ 0 | a | {a0,b0,c0} 1 | b | {a1,b1,c1} 2 | c | {a2,b2,c2} (3 rows) contrib_regression=# SELECT * FROM dblink_get_result('dtest1') AS t1(f1 int, f2 text, f3 text[]); f1 | f2 | f3 ----+----+---- (0 rows) contrib_regression=# SELECT * FROM contrib_regression-# dblink_send_query('dtest1', 'select * from foo where f1 < 3; select * from foo where f1 > 6') AS t1; t1 ---- 1 (1 row) contrib_regression=# SELECT * FROM dblink_get_result('dtest1') AS t1(f1 int, f2 text, f3 text[]); f1 | f2 | f3 ----+----+------------ 0 | a | {a0,b0,c0} 1 | b | {a1,b1,c1} 2 | c | {a2,b2,c2} (3 rows) contrib_regression=# SELECT * FROM dblink_get_result('dtest1') AS t1(f1 int, f2 text, f3 text[]); f1 | f2 | f3 ----+----+--------------- 7 | h | {a7,b7,c7} 8 | i | {a8,b8,c8} 9 | j | {a9,b9,c9} 10 | k | {a10,b10,c10} (4 rows) contrib_regression=# SELECT * FROM dblink_get_result('dtest1') AS t1(f1 int, f2 text, f3 text[]); f1 | f2 | f3 ----+----+---- (0 rows)