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'); 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)