Неявное приведение типов в FB
Добавлено: 28 июл 2006, 05:45
Натолкнулся на следующее поведение системы, имеет ся таблица
чего она делает неважно, а важно то что она заполняется в процедуре где имеются следующие определения:
И в теле процедуры имеется к примеру такой кусок кода :
т.е.
LACEINDEX у нас внутри процедуры итмеет тип VARCHAR а PLACEINDEX у таблице INTEGER - данный код работаеть правильно уже больше года на FB 1.xxx. Я считал что FB не допускает неявное приведение типов, а тут такой странный эффект.
Код: Выделить всё
CREATE TABLE R$OSTATOK (
USERID INTEGER NOT NULL,
GUID INTEGER NOT NULL,
PLACEINDEX INTEGER NOT NULL,
QUANTITY DOUBLE PRECISION DEFAULT 0,
QUANTITYALL DOUBLE PRECISION DEFAULT 0,
MODEDATE DATE DEFAULT current_date
);
Код: Выделить всё
CREATE PROCEDURE CALC_ONE_OSTATOK_DATA (
..........
RETURNS (
PLACEINDEX VARCHAR(80),
QUANTITY DOUBLE PRECISION,
QUANTITYALL DOUBLE PRECISION)
.......
Код: Выделить всё
/* приход и произведенная продукция*/
for
select ns.guid,nh.client2index,sum(ns.quantity) as quantity,sum(ns.quantityall) as quantityall from naclhead nh
left join naclspec ns on nh.id=ns.id and nh.inout=ns.inout
where nh.inout in (0,5,4) and nh.docdate<=:pdate and nh.used='T' and ns.guid=:PGUID
group by ns.guid,nh.client2index
into :LGUID,:placeindex,:LQUANTITY,:LQUANTITYALL
do begin
insert into r$ostatok (userid,guid,placeindex,quantity,quantityall)
values (:puserid,:lguid,:placeindex,:lquantity,:lquantityall);
end
