отработка процедуры в IB75
отработка процедуры в IB75
Отработка процедуры на отладке и фактически различается.
Вот ее часть, где она не так отрабатывает
"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". С чем это может быть связано?
Вот ее часть, где она не так отрабатывает
"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". С чем это может быть связано?
Отладчик _эмулирует_ работу сервера, там много допущений, особенно что касается преобразования типов данных.
Такой отладчик лучше, чем ничего.
По твоему вопросу - проверь арифметику, особенно целочисленную. У тебя третий диалект?
Желательно привести более-менее полный код процедуры, а также версию сервера, на котором она выполняется.
Такой отладчик лучше, чем ничего.
По твоему вопросу - проверь арифметику, особенно целочисленную. У тебя третий диалект?
Желательно привести более-менее полный код процедуры, а также версию сервера, на котором она выполняется.
"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
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