Код: Выделить всё
CREATE PROCEDURE A2 (
KOD INTEGER,
SOSTAV INTEGER,
MESGOD DATE,
OBPL NUMERIC(18,2),
OTPL NUMERIC(18,2),
SSKODUSL INTEGER,
SPRASCH INTEGER)
RETURNS (
PROCENT INTEGER,
SPOSOB INTEGER,
KOL INTEGER)
AS
DECLARE VARIABLE SN NUMERIC(18,2);
begin
execute procedure snorma :sostav returning_values :sn;
if (:sprasch=1 or :sprasch=2) then
for
select lgot.procent,
CalcKol(:sostav,lgotusl.kol,family.popravka_kom)
from family,lgot,lgotusl
where family.sskodkvar=:kod and
family.sskodlgot=lgot.kodlgot and
lgotusl.sskodlgot=family.sskodlgot and
lgotusl.sskodusl=:sskodusl and
family.beginlgot<=:mesgod and
(family.endlgot>:mesgod or family.endlgot is null)
into :procent, :kol
do suspend;
if ((:sprasch=3) and (:sostav>0)) then
if (:sn>:obpl/:sostav)
then
for
select lgot.procent,
lgotusl.sposob,
CalcKol(:sostav,lgotusl.kol,family.popravka_kvp)
from family,lgot,lgotusl
where family.sskodkvar=:kod and
family.sskodlgot=lgot.kodlgot and
lgotusl.sskodlgot=family.sskodlgot and
lgotusl.sskodusl=:sskodusl and
family.beginlgot<=:mesgod and
(family.endlgot>:mesgod or family.endlgot is null)
into :procent, :sposob, :kol
do suspend;
else
for
select lgot.procent,
zam(lgotusl.sposob,3),
CalcKol(:sostav,lgotusl.kol,family.popravka_kvp)
from family,lgot,lgotusl
where family.sskodkvar=:kod and
family.sskodlgot=lgot.kodlgot and
lgotusl.sskodlgot=family.sskodlgot and
lgotusl.sskodusl=:sskodusl and
family.beginlgot<=:mesgod and
(family.endlgot>:mesgod or family.endlgot is null)
into :procent, :sposob, :kol
do suspend;
if ((:sprasch=4) and (:sostav>0)) then
if (:sn>:otpl/:sostav)
then
for
select lgot.procent,
lgotusl.sposob,
CalcKol(:sostav,lgotusl.kol,family.popravka_otp)
from family,lgot,lgotusl
where family.sskodkvar=:kod and
family.sskodlgot=lgot.kodlgot and
lgotusl.sskodlgot=family.sskodlgot and
lgotusl.sskodusl=:sskodusl and
family.beginlgot<=:mesgod and
(family.endlgot>:mesgod or family.endlgot is null)
into :procent, :sposob, :kol
do suspend;
else
for
select lgot.procent,
zam(lgotusl.sposob,3),
CalcKol(:sostav,lgotusl.kol,family.popravka_otp)
from family,lgot,lgotusl
where family.sskodkvar=:kod and
family.sskodlgot=lgot.kodlgot and
lgotusl.sskodlgot=family.sskodlgot and
lgotusl.sskodusl=:sskodusl and
family.beginlgot<=:mesgod and
(family.endlgot>:mesgod or family.endlgot is null)
into :procent, :sposob, :kol
do suspend;
end
делаю вот так...
Код: Выделить всё
CREATE PROCEDURE A2 (
KOD INTEGER,
SOSTAV INTEGER,
MESGOD DATE,
OBPL NUMERIC(18,2),
OTPL NUMERIC(18,2),
SSKODUSL INTEGER,
SPRASCH INTEGER)
RETURNS (
PROCENT INTEGER,
SPOSOB INTEGER,
KOL INTEGER)
AS
DECLARE VARIABLE SN NUMERIC(18,2);
begin
execute procedure snorma :sostav returning_values :sn;
if (:sprasch=1 or :sprasch=2) then
for
select lgot.procent,
CalcKol(:sostav,lgotusl.kol,family.popravka_kom)
from family,lgot,lgotusl
where family.sskodkvar=:kod and
family.sskodlgot=lgot.kodlgot and
lgotusl.sskodlgot=family.sskodlgot and
lgotusl.sskodusl=:sskodusl and
family.beginlgot<=:mesgod and
(family.endlgot>:mesgod or family.endlgot is null)
into :procent, :kol
do suspend;
if ((:sprasch=3) and (:sostav>0)) then
if (:sn>:obpl/:sostav)
then
for
select lgot.procent,
lgotusl.sposob,
CalcKol(:sostav,lgotusl.kol,family.popravka_kvp)
from family,lgot,lgotusl
where family.sskodkvar=:kod and
family.sskodlgot=lgot.kodlgot and
lgotusl.sskodlgot=family.sskodlgot and
lgotusl.sskodusl=:sskodusl and
family.beginlgot<=:mesgod and
(family.endlgot>:mesgod or family.endlgot is null)
into :procent, :sposob, :kol
do suspend;
else
for
select lgot.procent,
zam(lgotusl.sposob,3),
CalcKol(:sostav,lgotusl.kol,family.popravka_kvp)
from family,lgot,lgotusl
where family.sskodkvar=:kod and
family.sskodlgot=lgot.kodlgot and
lgotusl.sskodlgot=family.sskodlgot and
lgotusl.sskodusl=:sskodusl and
family.beginlgot<=:mesgod and
(family.endlgot>:mesgod or family.endlgot is null)
into :procent, :sposob, :kol
do suspend;
if ((:sprasch=4) and (:sostav>0)) then
if (:sn>:otpl/:sostav)
then
for
select lgot.procent,
lgotusl.sposob,
CalcKol(:sostav,lgotusl.kol,family.popravka_otp)
from family,lgot,lgotusl
where family.sskodkvar=:kod and
family.sskodlgot=lgot.kodlgot and
lgotusl.sskodlgot=family.sskodlgot and
lgotusl.sskodusl=:sskodusl and
family.beginlgot<=:mesgod and
(family.endlgot>:mesgod or family.endlgot is null)
into :procent, :sposob, :kol
do suspend;
else
for
select lgot.procent,
zam(lgotusl.sposob,3),
CalcKol(:sostav,lgotusl.kol,family.popravka_otp)
from family,lgot,lgotusl
where family.sskodkvar=:kod and
family.sskodlgot=lgot.kodlgot and
lgotusl.sskodlgot=family.sskodlgot and
lgotusl.sskodusl=:sskodusl and
family.beginlgot<=:mesgod and
(family.endlgot>:mesgod or family.endlgot is null)
into :procent, :sposob, :kol
do begin
end;
end
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 95, char 4.
end.
чо не так то?
все есть и в хелпе так.... в смысле синтаксиса...