выполнил хранимую процедуру оракула с сервера SQL, используя функцию открытого запроса - PullRequest
2 голосов
/ 30 октября 2009

Можете ли вы подтвердить, успешно ли вы выполнили хранимую процедуру оракула с сервера SQL, используя функцию открытого запроса. Если да, то как? потому что у меня проблемы с выполнением хранимых процедур с аргументами с использованием функции OPENQUERY.

Ответы [ 2 ]

2 голосов
/ 03 ноября 2009

Наконец, выследил несколько решений - ключ к проблеме (для нас) в том, что по умолчанию RPC отключены для связанных серверов. Параметры для Rpc, Rpc Out и Use Remote Collation должны быть установлены в true. Дополнительная информация:

http://blog.sqlauthority.com/2007/10/18/sql-server-2005-fix-error-msg-7411-level-16-state-1-server-is-not-configured-for-rpc/

Решение, которое вы используете, будет зависеть от требований процедуры вывода. Первый пример возвращает выходное значение. Во втором примере никакие выходные значения не возвращаются (данные собираются в последующем запросе).

Пример 1

Процедура T2T_collect_all имеет два входных параметра (даты начала и окончания) и один выходной параметр (количество строк).

DECLARE @ l_i_parameter1 varchar (10)

DECLARE @ l_i_parameter2 varchar (10)

DECLARE @ l_i_parameter3 varchar (10)

DECLARE @ l_i_parameter4 varchar (10)

DECLARE @ l_o_parameter1 integer

SET @ l_i_parameter1 = '2009/10/01'

SET @ l_i_parameter2 = 'гггг / мм / дд'

SET @ l_i_parameter3 = '2009/12/31'

SET @ l_i_parameter4 = 'гггг / мм / дд'

SET @ l_o_parameter1 = 0

EXECUTE ('begin T2T_collect_all (to_date (?,?), To_date (?,?),?); End;', ​​

      @l_i_parameter1, 

      @l_i_parameter2,

      @l_i_parameter3, 

      @l_i_parameter4,

      @l_o_parameter1 OUTPUT

) AT ORA_DB;

Подробнее: http://blogs.msdn.com/joaquinv/archive/2008/10/23/execute-oracle-stored-procedure-in-sql-server.aspx

Пример 2a

Процедура T2T_collect_allx имеет только два входных параметра (даты начала и окончания).

EXECUTE ('begin T2T_collect_allx (SYSDATE - 40, SYSDATE); конец;') ORA_DB;

Пример 2b

SELECT * FROM OPENQUERY (ORA_DB, 'begin T2T_collect_allx (SYSDATE - 40, SYSDATE); конец;')

1 голос
/ 31 октября 2009

Я не парень дБ, но как насчет добавления выходного параметра в процесс Oracle. Затем заполните его в proc и верните на SQL-сервер. Вот пример нажмите здесь

НТН, ~ Ск

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