dblink_fetch
Name
dblink_fetch -- 从远程数据库中打开的游标中返回行
Synopsis
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)