|
06.06.2007, 11:57 | #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 ХП с одним параметром в каждой, но, это будет, как-то через одно место. С нетерпением жду ваших советов. Спасибо! |
|