Форум: "Базы";
Текущий архив: 2011.11.20;
Скачать: [xml.tar.bz2];
ВнизБеда с двойной точностью Найти похожие ветки
← →
Mike Kouzmine (2010-02-16 15:28) [0]Суть:
Имеется процедура
CREATE PROCEDURE SPISAN (
HEADER_ID INTEGER)
AS
DECLARE VARIABLE N VARCHAR(100) CHARACTER SET WIN1251;
DECLARE VARIABLE N_ID INTEGER;
DECLARE VARIABLE KOL DOUBLE PRECISION;
DECLARE VARIABLE CEN_SPIS DOUBLE PRECISION;
DECLARE VARIABLE O INTEGER;
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE S INTEGER;
DECLARE VARIABLE P_ID INTEGER;
DECLARE VARIABLE KOL_TEK1 DOUBLE PRECISION;
DECLARE VARIABLE TEMP DOUBLE PRECISION;
BEGIN
SELECT OPER, SOST_ID FROM HEADER
WHERE HEADER_ID = :HEADER_ID INTO :O, :S;
IF ((O = 2) AND (S = 1)) THEN
BEGIN
FOR SELECT SALES_ID, NOM_ID,
CAST(CAST( (KOLOUT * 1000) AS INTEGER) AS FLOAT) / 1000 FROM SALES
WHERE HEADER_ID = :HEADER_ID
INTO :ID, :N_ID, :KOL DO
BEGIN
FOR SELECT PARTS_ID,
CAST( CAST( (KOL_TEK * 1000) AS INTEGER) AS FLOAT) / 1000,
CENA_RUB FROM PARTS
WHERE ((NOM_ID = :N_ID) AND
((CAST( CAST( (KOL_TEK * 1000) AS INTEGER) AS FLOAT) / 1000) > 0))
ORDER BY DATE_OPER, PARTS_ID INTO :P_ID, :KOL_TEK1, :CEN_SPIS DO
BEGIN
IF ((KOL_TEK1) >= KOL) THEN
BEGIN
TEMP = :KOL_TEK1 - :KOL;
UPDATE PARTS
SET KOL_TEK = IIF(:TEMP < 0,0,:TEMP)
WHERE PARTS_ID = :P_ID;
INSERT INTO SPISANIE
(SALES_ID,PARTS_ID,KOL_OUT,CENA_SPIS)
VALUES
(:ID, :P_ID, :KOL, :CEN_SPIS);
KOL = 0;
KOL_TEK1 = 0;
BREAK;
END
ELSE
BEGIN
UPDATE PARTS
SET KOL_TEK = 0
WHERE PARTS_ID = :P_ID;
INSERT INTO SPISANIE
(SALES_ID,PARTS_ID,KOL_OUT,CENA_SPIS)
VALUES
(:ID, :P_ID, :KOL_TEK1, :CEN_SPIS);
KOL = KOL - KOL_TEK1;
END
END
IF (KOL > 0) THEN
BEGIN
EXCEPTION NOT_SATIS;
END
END
UPDATE HEADER
SET SOST_ID = 2
WHERE HEADER_ID = :HEADER_ID;
UPDATE SALES
SET SOST_ID = 2
WHERE HEADER_ID = :HEADER_ID;
END
WHEN EXCEPTION NOT_SATIS DO
BEGIN
SELECT TRIM(NAME) FROM NOMETKLATURA
WHERE NOM_ID = :N_ID INTO :N;
EXCEPTION NOT_SATIS "НЕ ХВАТАЕТ " || :KOL || " " || :N || " (" || :N_ID || ")";
END
WHEN ANY DO
BEGIN
SELECT TRIM(NAME) FROM NOMETKLATURA
WHERE NOM_ID = :N_ID INTO :N;
EXCEPTION NOT_SATIS "ОШИБКА СПИСАНИЯ " || :KOL || :KOL_TEK1 || :N
|| " (" || :N_ID || ")";
END
END
При отрабатывании возбуждается исключение
NOT_SATIS.
НЕ ХВАТАЕТ 3.552713678800501e-015 ТИК MICRO ТВИЛЛ C 4040/6044 ЦВЕТ:5522 (750).
At procedure "SPISAN".
прохожу отладчиком - все нормально.
К какому типу лучше привести для рассчетов или, возможно, есть другой вариант?
← →
Mike Kouzmine (2010-02-16 15:37) [1]Проблему решил.
Остался один вопрос - почему при вызове возбуждается исключение, а при отладке нет. Работаю в Эксперте.
← →
turbouser © (2010-02-16 16:55) [2]
> Mike Kouzmine (16.02.10 15:37) [1]
В отладчике отображаются значения переменных - можно посмотреть.
А вообще, отладчик в ibe не совсем "отладчик" :)
← →
Mike Kouzmine (2010-02-17 09:12) [3]turbouser © (16.02.10 16:55) [2] Я уже понял. Жаль.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2011.11.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c