登录
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
要使用的连接的名称;省略此参数以使用未命名的连接。
游标名称
要从中提取游标的名称。
howmany
要检索的最大行数。将从当前游标位置向前移动,提取接下来的
howmany
行。一旦游标到达其末尾,将不再产生更多行。fail_on_error
如果为 true(省略时为默认值),则在连接的远程端抛出的错误将导致在本地也抛出错误。如果为 false,则远程错误在本地报告为 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)