PostgreSQL Elephant Logo
2025年9月25日: PostgreSQL 18 发布!
dblink_fetch
上一步  上一级 F.11. dblink — 连接到其他 PostgreSQL 数据库 首页  下一步

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

如果为 true(省略时默认为 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)

上一步  上一级  下一步
dblink_open  首页  dblink_close