Страница 1 из 1
отработка процедуры в IB75
Добавлено: 04 мар 2008, 15:15
RAmes
Отработка процедуры на отладке и фактически различается.
Вот ее часть, где она не так отрабатывает
"update pbu s1
set
s1.ona = :VONA,
s1.saldo_vvr_end =:vsaldo_vvr
where ((s1.code_os=:code_os) and (s1.DATE_OST=:DAT))"
когда в отладчике смотрю суммы переменных "VONA" и "vsaldo_vvr " то они равны "217,85". А выполнив процедуру обнаруживаю, что вместо "217,85" записана в таблице сумма "- 775,75". С чем это может быть связано?
Добавлено: 04 мар 2008, 16:06
Attid
отладчику верить нельзя, ищи ошибку в процедуре.
в данном апдейте ошибок вроде нет.
использий тег [code][/code] !
Добавлено: 04 мар 2008, 16:16
RAmes
как нельзя? тогда смысл отладчика вообще? у меня в этой процедуре не у всех объектов такие странности происходят, т.е. из массива объектов только с одним такое происходит, а в отладчике нормально показывает отработку, а фактически не тот результат
Добавлено: 04 мар 2008, 17:07
WildSery
Отладчик _эмулирует_ работу сервера, там много допущений, особенно что касается преобразования типов данных.
Такой отладчик лучше, чем ничего.
По твоему вопросу - проверь арифметику, особенно целочисленную. У тебя третий диалект?
Желательно привести более-менее полный код процедуры, а также версию сервера, на котором она выполняется.
Добавлено: 05 мар 2008, 12:44
RAmes
"declare variable vona numeric(15,2);
declare variable vproc numeric(15,2);
declare variable vrazn_vvr numeric(15,2);
........
VONA=0
vrazn_vvr=0
select имя_столбца from имя_таблицы into :vproc;
vproc=vproc/100;
........
vrazn_VVR =VRAZN_BUH_NAL;
VONA= cast((VRAZN_VVR *vproc) as NUMERIC(15,2));
Vsaldo_VVR=VSUMMA_VVR+VONA;
........
update имя_таблицы s1
set
s1.ona = :VONA,
s1.saldo_vvr_end =:vsaldo_vvr
where ((s1.code_os=:code_os) and (s1.DATE_OST=:DAT));"
3-й диалект, InetrBase Server 7.5
Добавлено: 05 мар 2008, 13:11
WildSery
Ты указал типы не всех полей.
Кроме того, неясно начальное значение некоторых переменных.
В общем, твой пример у меня работает замечательно. Правда, на FB2. Криминала в вычислениях вроде не вижу.
У тебя точно нет триггера на апдейт?
Добавлено: 06 мар 2008, 09:00
RAmes
Триггера на апдейт нету.
я уже разобрался, в конце алгоритма при помощи другой переменной в эти поля значения заносились. Алгоритм весомый, просто не доглядел.
мне стыдно =(