dblink_fetch#

Примечание

Эта страница переведена при помощи нейросети GigaChat.

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 (используется по умолчанию при пропуске), то ошибка, возникающая на удаленной стороне соединения, вызывает ошибку и локально. Если false, удаленная ошибка выдается локально как УВЕДОМЛЕНИЕ, а функция не возвращает ни одной строки.

Возвращаемое значение#

Функция возвращает строку (строки), извлеченную из курсора. Чтобы использовать эту функцию, нужно указать ожидаемый набор столбцов, как это обсуждалось ранее для 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)