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)