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)