Ошибка PostgreSQL: функция, возвращающая запись, вызванную в контексте, которая не может принять запись типа, при удаленном вызове dblink - PullRequest
0 голосов
/ 27 февраля 2019

Когда я запускаю этот код:

do
$func$
declare cmd text;
begin

    cmd = FORMAT($$ select public.func_doit('%s'::date, '%s'::date); $$,'2019-01-01', '2019-03-01');

    PERFORM DBLINK('my_conn', cmd);


end;

$func$

Я получаю следующую ошибку:

Ошибка SQL [0A000]: ОШИБКА: функция, возвращающая запись, вызванная в контексте, которая не может принятьзапись типа Где: оператор SQL "SELECT DBLINK ('my_conn', cmd)" функция PL / pgSQL inline_code_block строка 12 в PERFORM ERROR: функция, возвращающая запись, вызванная в контексте, которая не может принять запись типа Где: оператор SQL "SELECT DBLINK ('my_conn'), cmd) "Линия 12 функции PL / pgSQL inline_code_block в PERFORM ERROR: функция, возвращающая запись, вызванную в контексте, которая не может принять запись типа Где: SQL-выражение« SELECT DBLINK ('my_conn', cmd) »Функция PL / pgSQL inline_code_block строка 12 в PERFORM

Вызываемая функция: public.func_doit, RETURNS void.

В миксе нет записи , на которую ссылаетсясообщение об ошибке.Функция просто что-то делает, и возвращать нечего.

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

Я знаюфункция работает, потому что когда я вызываю ее напрямую из ее локальной БД, она работает, как и ожидалось, с теми же параметрами.

PERFORM - это правильное утверждение, которое нужно использовать здесь, потому что функция ничего не возвращает.

И я тоже попробовал: ...perform * from public.func_doit..., который выдает синтаксическую ошибку.

Чего мне здесь не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...