![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странно необъяснимое поведение хранимой процедуры в Фаерберде ...
Rule © (2005-02-17 12:23:00)При выполнении хранимой процедуры выдает неправильные результаты, а в режиме отладки выдает правильные результаты, до этого встречался с такой проблеммой ... и решил её путем преставления срок кода, причем это переставление логики никакой не меняло вообще ... опять столкнулся с такойже проблеммой ... что делать, чего посоветуете ?
Rule (2005-02-17 12:26:00) [41]тело процедуры для полной информации
CREATE PROCEDURE SHOWPRICEFUEL (
NPRICE INTEGER)
RETURNS (
IDFUEL INTEGER,
NAME VARCHAR(20),
PRICE NUMERIC(15,2),
ADATIME TIMESTAMP)
AS
DECLARE VARIABLE DISCOUNTTYPE SMALLINT;
DECLARE VARIABLE PRICE0 NUMERIC(15,2);
begin
for select id, name from fuel
into :idfuel, :name
do
begin
/*забираем стеллогвскую цену и дату активации*/
select a.price, a.adatime, a.discounttype
from pricefuel a
where a.id_fuel=:idfuel
and a.nprice=:nprice
and a.adatime=(select max(b.adatime) from pricefuel b
where b.id_fuel=:idfuel and b.nprice=:nprice)
into :PRICE, :adatime, :DISCOUNTTYPE;
if (Discounttype!=0) then
begin
select a.price
from pricefuel a
where a.id_fuel=:idfuel
and a.nprice=0
and a.adatime=(select max(b.adatime) from pricefuel b
where b.id_fuel=:idfuel and b.nprice=0)
into :PRICE0;
/*тепеть в зависмости от скидки вычесляем цену ...*/
if (Discounttype=2) then
PRICE=price0-price;
if (Discounttype=1) then
PRICE=price0-(price0*price/100);
end
suspend;
end
end