Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / dblink. Вызов процедуры с out параметров / 3 сообщений из 3, страница 1 из 1
25.06.2021, 14:25
    #40080133
alex407
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dblink. Вызов процедуры с out параметров
Вызываю процедура, у которой есть out параметр, через dblink.
Получаю ошибку: statement returning results not allowed.
При этом процедура реально выполнятся нормально.

Можно как-то сделать такой вызов без ошибки или это ограничение dblink?

Вызов примерно такой:
Код: plsql
1.
PERFORM public.dblink_exec('db', 'CALL dbo.procname(1, NULL)');
...
Рейтинг: 0 / 0
25.06.2021, 16:45
    #40080170
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dblink. Вызов процедуры с out параметров
alex407,

dblink_exec предназначена для выполнения команд не возвращающих строки, типа create, alter, drop, truncate.
А процедура с выходным параметром возвращает строку, поэтому либо нужно вызов call обернуть в plpgsql-блок и подставить переменную вместо null. Либо вызывать функцию dblink и обрабатывать возвращаемую строку.

Пример.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
postgres=# create procedure p (in out a int) as 'begin a := 42; end;' language plpgsql;
CREATE PROCEDURE

postgres=# call p(null);
 a  
----
 42
(1 row)

postgres=# \c demo
demo=# create extension dblink;
CREATE EXTENSION

demo=# do $g$begin perform dblink_exec('dbname=postgres', 'do $$declare l int; begin CALL p(l); end;$$'); end;$g$;
DO

demo=# do $$ declare r record; begin select * into r from dblink('dbname=postgres', 'CALL p(NULL)') AS t(x int); end;$$;
DO
...
Рейтинг: 0 / 0
28.06.2021, 11:08
    #40080433
alex407
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dblink. Вызов процедуры с out параметров
Спасибо большое! То, что нужно!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / dblink. Вызов процедуры с out параметров / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]