powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / dblink внутри EXECUTE не видит аргументов (( Как выкрутиться?
2 сообщений из 2, страница 1 из 1
dblink внутри EXECUTE не видит аргументов (( Как выкрутиться?
    #39494650
an2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот фрагмент plpgsql функции.
Поскольку без EXECUTE эта конструкция совсем не не хочет переменные кушать пришлось сделать так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
_str_dblink = 'dblink(''dbname=' || _dbname || ''',' || '''select ' || _list_field || ' from ' || _table_name || ''')' ;

EXECUTE '
with inup as (
    insert into '  || _table_name || ' (' || _list_field || ')
        select '   || _list_field || '
            from ' || _str_dblink || '
    as t (' || _list_field_type ||   ')
    on conflict (' || _guid || ') do update set ' || _list_field_excl ||
    ' returning id
)
insert into tmp_table select id from inup' ;



что дает ошибку:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ОШИБКА:  функция dblink(unknown, unknown) не существует
СТРОКА 5:             from dblink('dbname=buf_dekanat','select mk_guid...
                           ^
ПОДСКАЗКА:  Функция с данными именем и типами аргументов не найдена. Возможно, вам следует добавить явные приведения типов.
ЗАПРОС:  
with inup as (
    insert into marks (mk_guid,mk_st_guid,mk_sb_guid,mk_at_guid)
        select mk_guid,mk_st_guid,mk_sb_guid,mk_at_guid
            from dblink('dbname=buf_dekanat','select mk_guid,mk_st_guid,mk_sb_guid,mk_at_guid from marks')
    as t (mk_guid character(36),mk_st_guid character varying(36),mk_sb_guid character varying(36),mk_at_guid character varying(36))
    on conflict (mk_guid) do update set mk_guid=EXCLUDED.mk_guid,mk_st_guid=EXCLUDED.mk_st_guid,mk_sb_guid=EXCLUDED.mk_sb_guid,mk_at_guid=EXCLUDED.mk_at_guid
returning id
)
insert into tmp_table select id from inup



Здесь видно, что запрос сформировался правильно - внутри dblink все красиво:
Код: plsql
1.
dblink('dbname=buf_dekanat', 'select mk_guid,mk_st_guid,mk_sb_guid,mk_at_guid from marks')



что ему надо, люди подскажите...
...
Рейтинг: 0 / 0
dblink внутри EXECUTE не видит аргументов (( Как выкрутиться?
    #39494733
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
an2k,

не пробовали
an2k,ПОДСКАЗКА: Функция с данными именем и типами аргументов не найдена. Возможно, вам следует добавить явные приведения типов.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / dblink внутри EXECUTE не видит аргументов (( Как выкрутиться?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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