Невозможно создать функцию SQL Server, которая вызывает функцию Oracle?

#sql-server #oracle #openquery

#sql-server #Oracle #openquery

Вопрос:

Я пытаюсь создать скалярную функцию SQL Server, которая вызывает функцию Oracle.

Представьте, что у вас есть функция в Oracle с именем «Stock_Orcl», которая возвращает запас для продукта, переданного в параметре, и вам нужна функция SQL server (с именем «Stock_sql»), которая вызывает функцию Oracle выше «Stock_Orcl».

Чтобы усложнить задачу, я не хочу создавать функцию CLR.

После слишком долгих поисков и копаний я осмелюсь сказать, что считаю это невозможным. Я успешно создал процедуру SQL server.

Кажется невозможным превратить ее в функцию по 2 основным причинам:

  1. Функции SQL server не могут вызывать процедуры, содержащие инструкцию exec
  2. Функции SQL server не могут содержать динамический оператор openquery

У кого-нибудь есть опыт работы с этим?

Ответ №1:

Обе найденные вами вещи верны. Функции SQL Server не могут вызывать ничего, что могло бы выполнить обновление или вставку, например, динамический SQL или открытый набор строк в целевой базе данных. Обойти это невозможно. Вы пробовали использовать хранимую процедуру SQL Server вместо этого?

Комментарии:

1. Мне нужна функция. Я хочу использовать ее в операторе select . Proc работает нормально….