Текущий архив: 2002.06.13;
Скачать: CL | DM;
Вниз
Хранимая процедура Найти похожие ветки
← →
Пользователь (2002-05-21 09:49) [0]IB6
ПОдскажите кде ошибка?
Не вставляються данные
в выборку они попадают, расчитываються а запись их не происходит
CREATE PROCEDURE RASCHET (
DATARAS DATE,
DATANACH DATE)
AS
DECLARE VARIABLE A NUMERIC(10,2);
DECLARE VARIABLE C NUMERIC(10,2);
DECLARE VARIABLE D NUMERIC(10,2);
DECLARE VARIABLE E NUMERIC(10,2);
DECLARE VARIABLE F NUMERIC(10,2);
DECLARE VARIABLE G NUMERIC(10,2);
DECLARE VARIABLE H NUMERIC(10,2);
DECLARE VARIABLE I NUMERIC(10,2);
DECLARE VARIABLE J NUMERIC(10,2);
DECLARE VARIABLE M NUMERIC(10,2);
DECLARE VARIABLE N NUMERIC(10,2);
DECLARE VARIABLE KODR INTEGER;
DECLARE VARIABLE KOD INTEGER;
DECLARE VARIABLE B INTEGER;
DECLARE VARIABLE ARSUB NUMERIC(10,2);
DECLARE VARIABLE SUMRAS NUMERIC(10,2);
DECLARE VARIABLE SUMAR NUMERIC(10,2);
DECLARE VARIABLE SUMSYB NUMERIC(10,2);
begin
delete from lschet where datanash=:dataras;
suspend;
for select kodarenda,
area, /* a */
kizn, /* c */
kmat, /* d */
ktipzd, /* e */
kkomf, /* f */
ktehob, /* g */
kraion, /* h */
kisparob, /* i */
ksubar, /* j */
stavka, /* m */
stavkamin /* n */
from arenda
where :DATARAS <= srokend and :DATAnach >= srokstart /*определить диапазон дат */
into :kodr,:a,:c,:d,:e,:f,:g,:h,:i,:j,:m,:n
do begin
/* проверка на субаренду */
select kodsubar from subar
where kodarenda=:kodr
into :b;
if (:b is not null) then
begin
select areasub from subar
where kodsubar=:b and :DATARAS<=dataend and :DATAnach>=datastart /*определить диапазон дат */
into :arsub;
end
else arsub=0;
/* расчет суммы */
if (:arsub=0) then
sumras=:m*:c*:d*:e*(:f+:g)*:h*:i*:a;
else
begin
sumar=:m*:c*:d*:e*(:f+:g)*:h*:i*(:a-:arsub);
sumsyb=:arsub*:j;
sumras=sumar+sumsyb;
end
/* вставляем расчетные данные */
kod=gen_id(newlschet,1);
insert into lschet (kodlschet,kodarenda,symma,datanash)
values(:kod,:kodr,:sumras,:DATARAS);
end
end
← →
Johnmen © (2002-05-21 10:10) [1]>>> sumras=sumar+sumsyb;
sumras=:sumar+:sumsyb;
← →
kaif © (2002-05-21 14:31) [2]Если какой-то из IF-ов, например
if (:arsub=0) then
содержит сравнение с NULL, то это может не сработать, так как любое сранение с NULL дает False.
Аккуратно проверь все IF-ы
← →
Awex © (2002-05-21 16:08) [3]delete from lschet where datanash=:dataras;
>>>suspend;
Обясните зачем сдесь это ?
Страницы: 1 вся ветка
Текущий архив: 2002.06.13;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.011 c