Вызовите хранимую процедуру Oracle с выходным параметром - PullRequest
3 голосов
/ 10 мая 2011

Я работаю с SSIS 2008 и у меня возникла проблема с вызовом хранимой процедуры Oracle с выходным параметром.

Я вызываю хранимую процедуру в SqlPlus так:

var vresult number;
exec my_stored_procedure(:vresult);
print vresult;

Операторы работают, и я получаю вывод, который мне нужен. Я пытаюсь сделать что-то похожее в SSIS, но мне нужно делать это неоднократно, возможно, в ForEach или скрипте, чтобы обновить временный набор результатов с результатом вызова хранимой процедуры (хранимая процедура генерирует число, и мне нужно добавить это число к каждой строке в наборе результатов, который просто содержит некоторую информацию о состоянии).

Я пробовал много разных подходов и всегда получаю «недопустимое утверждение» или подобные ошибки.

Я также попробовал следующие подходы:

  1. Как решить проблемы с отображением параметров запроса SQL при использовании поставщика Oracle OLE DB?

  2. Обновление строки в Oracle с помощью команды OLEDB (SSIS)

  3. Переменные Oracle

Суть проблемы, кажется, в выходном параметре хранимой процедуры.

Я пытался использовать поставщик Oracle для OLE DB. Есть идеи?

Ответы [ 4 ]

2 голосов
/ 10 мая 2011

Если вы пытаетесь вызвать хранимую процедуру в Oracle PLSQL, эта ссылка очень короткая. http://plsql -tutorial.com / PLSQL обходя-параметры-процедурного function.htm

Если вы работаете в Java, тогда. Объект Statement java.sql.CallableStatement ps; ps.registerOutParameter (параметрIndex, sqlType);

Точно так же .Net или любая другая платформа должна иметь такие же убеждения. Надеюсь, что так .:)

1 голос
/ 12 мая 2011

Я придумала решение, которое работает:

  • Используйте конструкцию "Declare" и "End"
  • Объедините с "Выполнить немедленно"
  • Добавитьоператор 'using' до конца exec немедленно вводит переменную

Так что сценарий, который реализует это, может выглядеть примерно так:

declare
myVar number;
myStatement varchar2(50);
begin
    myStatement:='exec myProc(:1)';
    execute immediate myStatement using output myVar;
end;

Вставьте этот сценарий вВыполните задачу SQL, установите свойства задачи, и она будет работать!

Я новичок в Oracle, но похоже, что запись: 1 является заполнителем для переменной.Вы также можете проверить это с помощью sqlplus - просто сохраните код в файле и запустите sqlplus с помощью опции @ в командной строке.

Единственная проблема: я не могу получить значение переменной для использования в SSIS, но это еще одна проблема.

0 голосов
/ 26 ноября 2016

Вы почти у цели. Чтобы получить значение выходного параметра из хранимой процедуры Oracle в SSIS, вот что сработало для меня

В задаче «Выполнение SQL» вставьте ее в поле оператора SQL

declare
vresult number;

begin
   my_stored_procedure(vresult);
   ?:=vresult;
end;

В сопоставлении параметров убедитесь, что ваша переменная SSIS сопоставлена ​​с этим выходом вашей хранимой процедуры, задав направление «Выход» и имя параметра как «0» (если это первый параметр)

PS: убедитесь, что типы данных выходных переменных Oracle соответствуют вашим переменным SSIS

Спасибо Mezue

0 голосов
/ 16 января 2013

проверьте это сообщение: Запустите пакет Oracle из SQL Server Integration Services

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...