![]() |
#21 |
Участник
|
Не уверен, но мне кажется, что я натыкался на подобные грабли. (Не в Аксапте). Попробуйте в методе Аксапты перед вызовом хранимой процедуры начать транзакцию. Ну и коммит, после отработки
![]() |
|
![]() |
#22 |
Участник
|
Установил я при помощи простых операций, которых навставлял в процедуре (вставлял записи в одну табличку), смотрел в Profiler.
Я теперь попробовал сделать вот таким способом OdbcConnection C; Statement S; LoginProperty LP = new LoginProperty(); ; LP.setDatabase("AXTEST"); LP.setDSN("AXTEST"); LP.setUsername(" "); тут логин LP.setPassword(" "); а тут пароль ![]() LP.setOther("MODE=1;PATCH=32"); C = new OdbcConnection(LP); S = C.createStatement(); ds = date2str(PeriodBegin,213,2,3,2,3,4); de = date2str(PeriodEnd,213,2,3,2,3,4); sqlS = ("EXECUTE [AXTest].[bmssa].[GET_DISC_CARD_REP] %1, %2, %3, %4, %5, %6, '%7', '%8'"); S.executeUpdate(strfmt(sqlS, Count_Buys0, Count_Buys1, Count_Buys2, Count_Buys3, Count_Buys4, Actual_Period, ds, de)); Ситуация такая, цикл while @@FETCH_Status=0 проходит полность, по его завершению больше ничего не происходит |
|
![]() |
#23 |
Участник
|
А если убрать вообще вызов этой функции, то цикл будет работать?
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#24 |
Участник
|
Цикл отрабатывается нормально и нормально отрабатываются все операции в этом цикле в том то и дело что после выхода из цикла, когда курсор будет полностью перебран, ничего не происходит
|
|
![]() |
#25 |
Участник
|
Извините, не понял.
![]()
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#26 |
Участник
|
Теперь я не понял
![]() функцию Is_Worked? если ее то да, правильно поняли |
|
![]() |
#27 |
Участник
|
Первое что непонятно - зачем используется таблица ##DISC_CARD_REP_TMP? Если для identity RecId, то можно и самому формировать RecId.
Второе - зачем выполняется insert, а затем update? Объедините их, выполняйте только Insert
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#28 |
Участник
|
Думаете в этом проблема?
Сейчас попробовал избавиться от цикла while при помощи меток, не помогло, получается поцедура вылетает когда @@FETCH_Status становится не равным 0 |
|
![]() |
#29 |
Участник
|
Не знаю. Просто использование лишней таблицы по-моему в данном случае неоправдано. Да и выполнением лишиних операций.
Попробуйте завернуть вызов вашей процедуры в другую процедуру и обрабатывать @@ERROR.
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#30 |
Участник
|
Все дело вообщем в курсоре, если остановится его перебирать, даже не добравшись до окончания то процедура вылетает все равно, щас буду думать как обойтись без него...
|
|
![]() |
#31 |
Участник
|
Скажите пожалуйста, а использование квалификатора имени бд в конструкции insert (axtest., имеется в виду)... это с чем связано? У вас распределенная транзакция?
С уважением, itfs. |
|
![]() |
#32 |
Участник
|
Была, теперь нет. Я все в одну базу слил.
Дело было не в курсоре, я от него избавился тупым методом ![]() ![]() |
|
![]() |
#33 |
Участник
|
Теперь уже непонятно - про какое место идет речь
![]() Попробуйте все-таки обработать @@ERROR во внешней процедуре - хоть узнаете по какой ошибке вылетает
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#34 |
Участник
|
Место это где я в цикле while перебирал курсор, теперь я просто перебирал данные из таблички временной, перебрав все данные она прекращала работу.
Да наверное придется еще процедуру написать |
|
![]() |
#35 |
Участник
|
Вот я и смотрю, что Is_worked с другой бд работает, вобщем, очень замысловато.
Теперь это не так, а проблема все-равно остается? Вы пользуетесь отловом исключительных ситуаций? Что при этом видно? С уважением, itfs. |
|
![]() |
#36 |
Участник
|
Да, теперь не так, но не изменилось абсолютно ничего.
Самое интересное что @@ERROR всегда равен 0 ![]() То есть ошибки как таковой нет. Я уже вообще отказываюсь что либо понимать ![]() |
|
![]() |
#37 |
Участник
|
Было бы неплохо увидеть новый код, работа которого вызывает нарекание. Ну и рез-ты экспериментов, тоже интересны...
С чем мы теперь боремся? с курсором? С уважением, itfs. |
|
![]() |
#38 |
Участник
|
Код практически не изменился, дело было не в курсоре. я от него избавлялся, толку не было, я его назад вернул
|
|
![]() |
#39 |
Участник
|
Вложите Trace File из SQL Profiler'а. По коду уже ничего не понятно. Будем смотреть выполнение
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#40 |
Участник
|
Присоединяюсь. Я бы только еще, судя по дальнейшему использованию, сразу на курсоре поставил LOCAL STATIC.
С уважением, itfs. |
|
|
|