Finalmente localicé algunas soluciones:la clave del problema (para nosotros) es que, de forma predeterminada, los RPC están deshabilitados para los servidores vinculados. Los parámetros para Rpc, Rpc Out y Use Remote Collation deben establecerse en verdadero. Más información:
La solución que utilice dependerá de los requisitos de salida del procedimiento. El primer ejemplo devuelve un valor de salida. El segundo ejemplo no devuelve valores de salida (los datos se recopilan en una consulta posterior).
Ejemplo 1
El procedimiento T2T_collect_all tiene dos parámetros de entrada (fechas de inicio y finalización) y un parámetro de salida (recuento de filas).
DECLARAR @l_i_parameter1 varchar(10)
DECLARAR @l_i_parameter2 varchar(10)
DECLARAR @l_i_parameter3 varchar(10)
DECLARAR @l_i_parameter4 varchar(10)
DECLARAR @l_o_parameter1 entero
SET @l_i_parameter1 ='2009/10/01'
SET @l_i_parameter2 ='aaaa/mm/dd'
ESTABLECER @l_i_parameter3 ='2009/12/31'
SET @l_i_parameter4 ='aaaa/mm/dd'
ESTABLECER @l_o_parameter1 =0
EXECUTE ('comenzar T2T_collect_all(to_date(?, ?), to_date(?, ?), ? ); end;',
@l_i_parameter1,
@l_i_parameter2,
@l_i_parameter3,
@l_i_parameter4,
@l_o_parameter1 OUTPUT
) EN ORA_DB;
Más información:http://blogs.msdn.com/joaquinv/archive/2008/10/23/execute-oracle-stored-procedure-in-sql-server.aspx
Ejemplo 2a
El procedimiento T2T_collect_allx tiene solo dos parámetros de entrada (fechas de inicio y fin).
EJECUTAR ('comenzar T2T_collect_allx (SYSDATE - 40, SYSDATE); fin;') ORA_DB;
Ejemplo 2b
SELECCIONE * DESDE OPENQUERY(ORA_DB, 'comienza T2T_collect_allx (SYSDATE - 40, SYSDATE); fin;')