Passando Parâmetros de Cadeia de Caracteres para os Procedimentos Vinculados do Servidor Oracle do SQL Server
Eu tenho um procedimento Oracle chamadoP_CREATE_USER
. Leva um únicovarchar2
parâmetro:
create or replace PROCEDURE
P_CREATE_USER (P_USERID varchar2)
...
Eu posso executar isso da Oracle comoEXEC P_CREATE_USER('MyUserId')
Temos o servidor Oracle vinculado ao nosso SQL Server.
Eu tentei:
EXECUTE('P_CREATE_USER(''MyUserId'')') AT ORACLE_SERVER
Para o meu problema, eu recebo:
O provedor OLE DB "OraOLEDB.Oracle" para o servidor vinculado "ORACLE_SERVER" retornou a mensagem "ORA-00900: instrução SQL inválida".
Msg 7215, nível 17, estado 1, linha 1
Não foi possível executar a instrução no servidor remoto 'ORACLE_SERVER'.
Eu tentei várias variantes, usando um espaço entreP_CREATE_USER
e o parâmetro em vez de parênteses. Eu tentei usar@P_USERID=''MyUserId''
. Não tenho nenhum problema em executar procedimentos sem parâmetros dessa maneira, mas não consigo ver como descobrir como passar uma string ...
Atualizar: O UserId usado para o servidor vinculado tem permissões para executar este procedimento e pode executá-lo diretamente do Oracle. Este não é um problema de permissões. O melhor que posso dizer é que o parâmetro é a única coisa que causa um problema.