DOC.PROTOTYPES.RU

Имя

dblink_send_query - отправить асинхронный запрос на внешний сервер.

Синтакис
SQL код (1)
SELECT dblink_send_query(
                        [ имя соединения ]::text,
                        [ SQL запрос ]::text)
        [ AS | INTO ] result::integer;
Описание

dblink_send_query посылает запрос в асинхронном режиме, то бишь не дожидаясь результата выполнения запроса. Но асинхронные запросы нельзя послать одновременно на одно и то же соединение (внешний сервер).

Статус завершения асинхронного запроса можно проверить функцией dblink_is_busy. Результаты асинхронного запроса можно получить функцией dblink_get_result. Кроме того, можно попытаться отменить активный асинхронный запрос с помощью dblink_cancel_query.

Аргументы

имя соединения - обязательное поле, имя используемого соединения;

SQL запрос - SQL запрос который вы хотите выполнить на внешней базе данных;

Возвращаемые данные

Возвращает 1, если запрос успешно отправлен, либо 0 при ошибке отправки запроса.

Примечание

Следует иметь ввиду, что возвращается не статус выполнения запроса, а только статус постановки его в очередь и если было возвращено 1, это совсем не значит, что запрос успешно выполнился, поэтому с помощью dblink_is_busy ждем завершения асинхронного запроса, а потом проверяем ошибки dblink_error_message.

Кроме SELECT запросов можно отправлять команды INSERT, UPDATE и DELETE, но увы, результата выполнения из dblink_get_result мы получить не можем ибо там баг, но возможно дождаться его выполнения dblink_is_busy и проверить статус ошибки dblink_error_message.

Оригинал
http://www.postgresql.org/docs/8.4/static/contrib-dblink-send-query.html

Copyright © 2011 Сергей Томулевич