@druper

Как из ms sql вызвать функцию c параметрами, которая находится на приликнованом postgresql?

надо вызвать такую простую функцию и получить результат.
create or replace function fn_order_exist(p_order_ms_id int)
returns int
language plpgsql
as
$$
declare
begin
  if exists (select 1 from public.orders where order_ms_id=p_order_ms_id) then
    return 1;
  else 
    return 0;
  end if; 
end
$$;

OPENQUERY не понимает параметров.
запрос к самой таблице сделать не могу
select order_id from pgServer.aac.[public].orders where order_id=1;
тк mssql 2000 и драйвер не понимает некоторые типы данных и отваливается с ошибками типа:
Server: Msg 7356, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. Metadata information was changed at execution time.
OLE DB error trace [Non-interface error: Column 'self_order' (compile-time ordinal 7) of object '"aac"."public"."orders"' was reported to have a DBCOLUMNFLAGS_ISLONG of 128 at compile time and 0 at run time].

  • Вопрос задан
  • 180 просмотров
Пригласить эксперта
Ответы на вопрос 1
@zhaar
>OPENQUERY не понимает параметров.
Все прекрасно понимает, просто формируй запрос через динамический sql - т.е. собрав предварительно текст запроса, а потом его выполнив.

Примерно так:
declare @sql varchar(max)
set @sql = concat('OPENQUERY ....'''',@var1,'''' somesql'''',@var2,'''''...''')
exec (@sql)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы