历史版本。 PostgreSQL 13 已结束支持。 2025-11-13. 请参阅 当前版本手册.
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 建立的游标中提取行。
参数
connname要使用的连接名称;省略该参数则使用未命名连接。
cursorname要从中提取数据的游标名称。
howmany要检索的最大行数。从当前游标位置开始,向前提取接下来的
howmany行。一旦游标到达末尾,就不会再产生更多行。fail_on_error如果为真(省略时默认),则连接远程端抛出的错误也会在本地抛出。如果为假,远程端错误会在本地报告为一个 NOTICE,并且该函数不返回任何行。
返回值
该函数返回从游标提取的行。要使用此函数,需要像前面讨论
dblink 时那样,指定预期的列集。
注解
如果 FROM 子句中指定的返回列数与远程游标实际返回的列数不一致,就会抛出错误。在这种情况下,远程游标仍会像没有发生该错误一样前进相同的行数。远程
FETCH 完成之后,本地查询中发生的任何其他错误也是如此。
示例
SELECT dblink_connect('dbname=postgres options=-csearch_path=');
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)