dblink_fetch#
dblink_fetch
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, то удаленная ошибка сообщается локально как 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)