问题报告 纠错本页面

dblink_fetch

名称

dblink_fetch -- 从远程数据库中打开的游标中返回行

大纲

dblink_fetch(text cursorname, int howmany [, bool fail_on_error]) returns setof record
dblink_fetch(text connname, text cursorname, int howmany [, bool fail_on_error]) returns setof record

描述

dblink_fetch通过dblink_open预先建立的游标中抓取行。

参数

conname

要使用的连接名称;省略这个参数使用未命名连接。

cursorname

获取游标名称。

howmany

要检索的最大行数。抓取下一个howmany行, 从当前光标位置开始,向前移动。一旦游标已经到达末尾,不会产生更多行。

fail_on_error

如果真(忽略时缺省)那么在连接的远程端抛出的错误也会导致本地抛出错误, 如果假,那么远程错误在本地作为NOTICE被报告, 并且函数没有返回行。

返回值

该函数返回从游标中抓取的行。要使用该函数,你将需要 指定预期的字段集,正如前面讨论的dblink

注意

FROM子句上指定的返回列数之间的不匹配,并且通过远程游标返回实际列数,将抛出一个错误。在这种情况下,远程游标仍然按照没有产生错误时一样的行增长。 同样的在远程FETCH执行后本地查询产生的任何其他错误也是这样。

例子

SELECT dblink_connect('dbname=postgres');
 dblink_connect
----------------
 OK
(1 row)

SELECT dblink_open('foo', 'select proname, prosrc from pg_proc where proname like ''bytea%''');
 dblink_open
-------------
 OK
(1 row)

SELECT * FROM dblink_fetch('foo', 5) AS (funcname name, source text);
 funcname |  source
----------+----------
 byteacat | byteacat
 byteacmp | byteacmp
 byteaeq  | byteaeq
 byteage  | byteage
 byteagt  | byteagt
(5 rows)

SELECT * FROM dblink_fetch('foo', 5) AS (funcname name, source text);
 funcname  |  source
-----------+-----------
 byteain   | byteain
 byteale   | byteale
 bytealike | bytealike
 bytealt   | bytealt
 byteane   | byteane
(5 rows)

SELECT * FROM dblink_fetch('foo', 5) AS (funcname name, source text);
  funcname  |   source
------------+------------
 byteanlike | byteanlike
 byteaout   | byteaout
(2 rows)

SELECT * FROM dblink_fetch('foo', 5) AS (funcname name, source text);
 funcname | source
----------+--------
(0 rows)