DOC.PROTOTYPES.RU

Имя

dblink_get_result - взять результат выполнения асинхронного запроса.

Синтакис
SQL код (1)
SELECT *
    FROM dblink_get_result(
                        [ имя соединения ]::text,
                        [ остановка в случае ошибки ]::boolean)
        AS ([ описание полей ]);
Описание

dblink_get_result забирает результат выполнения асинхронного запроса отправленного функцией dblink_send_query. Если асинхронный запрос еще не отработал, то dblink_get_result будет ждать его выполнения.

Аргументы

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

остановка в случае ошибки - необязательный логический параметр, Если он указан как TRUE (что является умолчательным значением когда данный параметр опущен), то ошибка возвращаемая в случае неправильного выполнения удаленного запроса применяется и локально, при FALSE же ошибка выводится только лишь в качестве уведомления, а функция возвращает 0 строк.

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

Возвращает строки типа record, поэтому поля строки после получения требуется определить, хотя можно так же как и для dblink создать отдельные функции возвращающие определенные типы строк.

Вообще то в родной документации написано, что при выполнении SQL команд возвращается одно текстовое поле, но это не так, в dblink баг (о чем я им написал, как быстро исправят - неизвестно).

Примечание

Когда таки хочется узнать о том как отработала наша SQL команда, можно использовать следущий алгоритм в функциях:

SQL код (2)
SELECT dblink_send_query('remotebase', 'INSERT INTO mytable (f1, f2) VALUES (1,2)');
WHILE dblink_is_busy('remotebase') LOOP END LOOP;
SELECT dblink_error_message('remotebase') INTO res;

Только следует иметь ввиду, что у данного соединения не было ошибки до выполнения этого блока. Правильней будет сравнивать результат до и после.

Оригинал

http://www.postgresql.org/docs/8.4/static/contrib-dblink-get-result.html

Сергей Томулевич aka Phoinix (02.10.2009 г.)
Copyright © 2011 Сергей Томулевич