🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# dblink_get_result ## Name dblink_get_result -- 获得异步查询结果 ## Synopsis ``` dblink_get_result(text connname [, bool fail_on_error]) returns setof record ``` ## 描述 `dblink_get_result`收集先前使用`dblink_send_query`发送的异步查询结果。 如果还没完成查询,那么`dblink_get_result`将等待它。 ## 参数 `conname` 要使用的连接名字。 `fail_on_error` 如果真(忽略时缺省)那么在连接的远程端抛出的错误也会导致本地抛出错误, 如果假,那么远程错误在本地作为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) ```