dblink_open#
dblink_open
dblink_open — открывает курсор в удаленной базе данных
Синтаксис
dblink_open(text cursorname, text sql [, bool fail_on_error]) returns text dblink_open(text connname, text cursorname, text sql [, bool fail_on_error]) returns text
Описание
dblink_open()
открывает курсор в удаленной базе данных.
Курсор может быть далее обработан с помощью
dblink_fetch()
и dblink_close()
.
Аргументы
connname
Имя соединения, которое нужно использовать; опустите этот параметр, чтобы использовать безымянное соединение.
cursorname
Имя, которое будет присвоено этому курсору.
sql
Перечисление
SELECT
, которое нужно выполнить в удаленной базе данных, напримерselect * from pg_class
.fail_on_error
Если значение true (по умолчанию, если не указано), то ошибка, возникшая на удаленной стороне соединения, также вызывает ошибку на локальной стороне. Если значение false, то удаленная ошибка сообщается локально как NOTICE, а возвращаемое значение функции устанавливается в
ERROR
.
Возвращаемое значение
Возвращает статус, либо OK
, либо ERROR
.
Примечания
Так как курсор может существовать только в пределах транзакции, функция dblink_open
начинает явный блок транзакции (BEGIN
) на удаленной стороне, если удаленная сторона еще не находится внутри транзакции. Эта транзакция будет закрыта, когда будет выполнена соответствующая функция dblink_close
. Обратите внимание, что если вы используете функцию dblink_exec
для изменения данных между вызовами функций dblink_open
и dblink_close
, а затем происходит ошибка или вы используете функцию dblink_disconnect
перед вызовом функции dblink_close
, ваше изменение будет потеряно, так как транзакция будет отменена.
Примеры
SELECT dblink_connect('dbname=postgres options=-csearch_path='); dblink_connect ---------------- OK (1 row) SELECT dblink_open('foo', 'select proname, prosrc from pg_proc'); dblink_open ------------- OK (1 row)