|
|
#1 |
|
Участник
|
Уважаемые коллеги!
Появилась необходимость запуска ХП Oracle с несколькими возвращаемыми значениями. Что имеем на входе: 1) Процедура Oracle следующего вида (находится в пакете CHECK_UTILS): Код: Procedure GetAgrBal(pAgrID in varchar2, pDateVal in date,pAgrCurBal out number, pRurBal out number, pAgrCur out varchar2); 2) Функция по работе с этой ХП в Navision: Код: C\Al Globals:
Agreement Record Agreement
ADOCommand Automation 'Microsoft ActiveX Data Objects 2.7 Library'.Command
ADOParameter Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Parameter
ADOParameters Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Parameters
ADOConnection_ Automation 'Microsoft ActiveX Data Objects 2.6 Library'.Connection
CLEAR(ADOCommand);
CREATE(ADOCommand);
ADOCommand.ActiveConnection := ADOConnection_;
ADOCommand.CommandType := 4;
CLEAR(ADOParameter);
CREATE(ADOParameter);
ADOParameters := ADOCommand.Parameters;
ADOParameter := ADOCommand.CreateParameter('@pAgrCurBal',200,4,20);
ADOParameters.Append(ADOParameter);
ADOParameters := ADOCommand.Parameters;
ADOParameter := ADOCommand.CreateParameter('@pRurBal',200,4,20);
ADOParameters.Append(ADOParameter);
ADOParameters := ADOCommand.Parameters;
ADOParameter := ADOCommand.CreateParameter('@pAgrCur',200,4,20);
ADOParameters.Append(ADOParameter);
ADOCommand.CommandText := 'migrator.CHECK_UTILS.GetAgrBal(''' + Agreement."Document No." + ''',''' + FORMAT(TODAY) + ''')';
ADOCommand.Execute;Я ранее работал с ХП Oracle, но мне нужно было обработать только 1 выходной параметр. Количество входных параметров обрабатывается любое без проблем. Еще, я так и не нашел нигде, как обрабатывать курсор. Пришлось писать SQL-запрос непосредственно в Navision. В принципе, данную проблеуму можно обойти, написав 3 ХП с одним параметром в каждой, но, это будет, как-то через одно место. С нетерпением жду ваших советов. Спасибо! |
|
|