Finalmente rastreei algumas soluções - a chave para o problema (para nós) é que, por padrão, os RPCs são desabilitados para servidores vinculados. Os parâmetros para Rpc, Rpc Out e Use Remote Collation precisam ser definidos como true. Mais informações:
http://blog.sqlauthority.com/2007/10/18/sql-server-2005-fix-error-msg-7411-level-16-state- 1-server-is-not-configured-for-rpc/
A solução que você usar dependerá dos requisitos de saída do procedimento. O primeiro exemplo retorna um valor de saída. No segundo exemplo, nenhum valor de saída é retornado (os dados são coletados em uma consulta subsequente).
Exemplo 1
O procedimento T2T_collect_all possui dois parâmetros de entrada (datas de início e término) e um parâmetro de saída (contagem de linhas).
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 inteiro
SET @l_i_parameter1 ='2009/10/01'
SET @l_i_parameter2 ='aaaa/mm/dd'
SET @l_i_parameter3 ='2009/12/31'
SET @l_i_parameter4 ='aaaa/mm/dd'
SET @l_o_parameter1 =0
EXECUTE ( 'começo T2T_collect_all(to_date(?, ?), to_date(?, ?), ? ); end;',
@l_i_parameter1,
@l_i_parameter2,
@l_i_parameter3,
@l_i_parameter4,
@l_o_parameter1 OUTPUT
) EM ORA_DB;
Mais informações:http://blogs.msdn.com/joaquinv/archive/2008/10/23/execute-oracle-stored-procedure-in-sql-server.aspx
Exemplo 2a
O procedimento T2T_collect_allx possui apenas dois parâmetros de entrada (datas inicial e final).
EXECUTE ('início T2T_collect_allx (SYSDATE - 40, SYSDATE); fim;') ORA_DB;
Exemplo 2b
SELECT * FROM OPENQUERY(ORA_DB, 'início T2T_collect_allx (SYSDATE - 40, SYSDATE ); fim;')