Наконец, выследил несколько решений - ключ к проблеме (для нас) в том, что по умолчанию 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); конец;')