Передача строковых параметров в связанные процедуры Oracle Server из SQL Server

У меня есть процедура Oracle называется P_CREATE_USER, Требуется один varchar2 параметр:

create or replace PROCEDURE 
P_CREATE_USER (P_USERID varchar2)
...

Я могу запустить это из Oracle как EXEC P_CREATE_USER('MyUserId')

У нас есть сервер Oracle, связанный с нашим сервером SQL.

Я пробовал:

EXECUTE('P_CREATE_USER(''MyUserId'')') AT ORACLE_SERVER

За мои неприятности я получаю:

Поставщик OLE DB "OraOLEDB.Oracle" для связанного сервера "ORACLE_SERVER" вернул сообщение "ORA-00900: недопустимый оператор SQL".
Msg 7215, уровень 17, состояние 1, строка 1
Не удалось выполнить оператор на удаленном сервере 'ORACLE_SERVER'.

Я пробовал несколько вариантов, используя пробел между P_CREATE_USER и параметр вместо круглых скобок. Я пытался использовать @P_USERID=''MyUserId'', У меня нет проблем с запуском процедур без параметров, но я не могу понять, как передать строку...

Обновление: UserId, используемый для связанного сервера, имеет разрешения для запуска этой процедуры и может запускать его непосредственно из Oracle. Это не проблема с разрешениями. Насколько я могу судить, параметр является единственной причиной проблемы.

1 ответ

Решение

Решение требовало проверки Dynamic Parameters свойство в драйвере OraOLEDB.Oracle в SQL Server (Объекты сервера / Связанные серверы / Провайдеры /OraOLEDB.Oracle).

Затем, чтобы вызвать процедуру, мне нужно было сделать следующее:

DECLARE @userid varchar(50)
SET @userid = 'MyUserId'
EXECUTE ('BEGIN P_CREATE_USER(?); END;', @userid) AT ORACLE_SERVER
Другие вопросы по тегам