26.09.2005, 09:15 | #21 |
Участник
|
Не уверен, но мне кажется, что я натыкался на подобные грабли. (Не в Аксапте). Попробуйте в методе Аксапты перед вызовом хранимой процедуры начать транзакцию. Ну и коммит, после отработки Query Analyzer работает в режиме auto commit по умолчанию
|
|
26.09.2005, 09:17 | #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 проходит полность, по его завершению больше ничего не происходит |
|
26.09.2005, 09:32 | #23 |
Участник
|
А если убрать вообще вызов этой функции, то цикл будет работать?
__________________
Axapta v.3.0 sp5 kr2 |
|
26.09.2005, 09:34 | #24 |
Участник
|
Цикл отрабатывается нормально и нормально отрабатываются все операции в этом цикле в том то и дело что после выхода из цикла, когда курсор будет полностью перебран, ничего не происходит
|
|
26.09.2005, 09:46 | #25 |
Участник
|
Извините, не понял. Т.е. если убрать вызов функции, то ничего не изменится? Процедура будет отрабатывать неправильно?
__________________
Axapta v.3.0 sp5 kr2 |
|
26.09.2005, 09:48 | #26 |
Участник
|
Теперь я не понял
функцию Is_Worked? если ее то да, правильно поняли |
|
26.09.2005, 10:06 | #27 |
Участник
|
Первое что непонятно - зачем используется таблица ##DISC_CARD_REP_TMP? Если для identity RecId, то можно и самому формировать RecId.
Второе - зачем выполняется insert, а затем update? Объедините их, выполняйте только Insert
__________________
Axapta v.3.0 sp5 kr2 |
|
26.09.2005, 10:22 | #28 |
Участник
|
Думаете в этом проблема?
Сейчас попробовал избавиться от цикла while при помощи меток, не помогло, получается поцедура вылетает когда @@FETCH_Status становится не равным 0 |
|
26.09.2005, 10:33 | #29 |
Участник
|
Не знаю. Просто использование лишней таблицы по-моему в данном случае неоправдано. Да и выполнением лишиних операций.
Попробуйте завернуть вызов вашей процедуры в другую процедуру и обрабатывать @@ERROR.
__________________
Axapta v.3.0 sp5 kr2 |
|
26.09.2005, 11:04 | #30 |
Участник
|
Все дело вообщем в курсоре, если остановится его перебирать, даже не добравшись до окончания то процедура вылетает все равно, щас буду думать как обойтись без него...
|
|
26.09.2005, 11:16 | #31 |
Участник
|
Скажите пожалуйста, а использование квалификатора имени бд в конструкции insert (axtest., имеется в виду)... это с чем связано? У вас распределенная транзакция?
С уважением, itfs. |
|
26.09.2005, 13:17 | #32 |
Участник
|
Была, теперь нет. Я все в одну базу слил.
Дело было не в курсоре, я от него избавился тупым методом создал временную табличку, в нее данные перекинул и с ней уже работал, все равно в том же месте вылетает, мне уже охота застрелиться |
|
26.09.2005, 13:32 | #33 |
Участник
|
Теперь уже непонятно - про какое место идет речь
Попробуйте все-таки обработать @@ERROR во внешней процедуре - хоть узнаете по какой ошибке вылетает
__________________
Axapta v.3.0 sp5 kr2 |
|
26.09.2005, 13:37 | #34 |
Участник
|
Место это где я в цикле while перебирал курсор, теперь я просто перебирал данные из таблички временной, перебрав все данные она прекращала работу.
Да наверное придется еще процедуру написать |
|
26.09.2005, 13:56 | #35 |
Участник
|
Вот я и смотрю, что Is_worked с другой бд работает, вобщем, очень замысловато.
Теперь это не так, а проблема все-равно остается? Вы пользуетесь отловом исключительных ситуаций? Что при этом видно? С уважением, itfs. |
|
26.09.2005, 14:16 | #36 |
Участник
|
Да, теперь не так, но не изменилось абсолютно ничего.
Самое интересное что @@ERROR всегда равен 0 То есть ошибки как таковой нет. Я уже вообще отказываюсь что либо понимать |
|
26.09.2005, 14:29 | #37 |
Участник
|
Было бы неплохо увидеть новый код, работа которого вызывает нарекание. Ну и рез-ты экспериментов, тоже интересны...
С чем мы теперь боремся? с курсором? С уважением, itfs. |
|
26.09.2005, 14:32 | #38 |
Участник
|
Код практически не изменился, дело было не в курсоре. я от него избавлялся, толку не было, я его назад вернул
|
|
26.09.2005, 14:47 | #39 |
Участник
|
Вложите Trace File из SQL Profiler'а. По коду уже ничего не понятно. Будем смотреть выполнение
__________________
Axapta v.3.0 sp5 kr2 |
|
26.09.2005, 14:57 | #40 |
Участник
|
Присоединяюсь. Я бы только еще, судя по дальнейшему использованию, сразу на курсоре поставил LOCAL STATIC.
С уважением, itfs. |
|
|
|