Входные параметры
Параметр | Тип | Описание |
---|---|---|
ISCURRENT |
INTEGER |
|
PARTYDATE |
DATE |
|
CROPID |
INTEGER |
|
CLASSID |
INTEGER |
|
STORAGEID |
INTEGER |
|
Выходные параметры
Параметр | Тип | Описание |
---|---|---|
PARTYID |
INTEGER |
|
PARTYNAME |
VARCHAR(31) |
|
BEGINDATE |
DATE |
|
ENDDATE |
DATE |
|
STATE |
INTEGER |
|
HARVESTINGYEAR |
INTEGER |
|
NEXTPARTYID |
INTEGER |
|
Описание
(Нет описания для процедуры GETPARTYID_)
Определение
CREATE PROCEDURE GETPARTYID_(
ISCURRENT INTEGER,
PARTYDATE DATE,
CROPID INTEGER,
CLASSID INTEGER,
STORAGEID INTEGER)
RETURNS (
PARTYID INTEGER,
PARTYNAME VARCHAR(31),
BEGINDATE DATE,
ENDDATE DATE,
STATE INTEGER,
HARVESTINGYEAR INTEGER,
NEXTPARTYID INTEGER)
AS
declare variable PARTIES_ENDDATE date;
begin
if (:ISCURRENT = 1) then
for
select PARTIES.PARTYID, PARTIES.PARTYNAME, PARTIES.BEGINDATE, PARTIES.ENDDATE,
PARTIES.STATE, PARTIES.HARVESTINGYEAR
from PARTIES
where (PARTIES.STATE = 1)
and ((PARTIES.STORAGEID = :STORAGEID) and (PARTIES.CROPID = :CROPID)
and ((PARTIES.CLASSID = :CLASSID) or (PARTIES.CLASSID is null)))
into :PARTYID, :PARTYNAME, :BEGINDATE, :ENDDATE, :STATE, :HARVESTINGYEAR
do suspend;
else begin
if (:PARTYDATE > current_date) then
PARTIES_ENDDATE = :PARTYDATE;
else PARTIES_ENDDATE = current_date;
for
select PARTIES.PARTYID, PARTIES.PARTYNAME, PARTIES.BEGINDATE, PARTIES.ENDDATE,
PARTIES.STATE, PARTIES.HARVESTINGYEAR, PARTIES.NEXTPARTYID
from PARTIES
where (:PARTYDATE between PARTIES.BEGINDATE and coalesce(PARTIES.ENDDATE,:PARTIES_ENDDATE))
and ((PARTIES.STORAGEID = :STORAGEID) and (PARTIES.CROPID = :CROPID)
and ((PARTIES.CLASSID = :CLASSID) or (PARTIES.CLASSID is null)))
into :PARTYID, :PARTYNAME, :BEGINDATE, :ENDDATE, :STATE, :HARVESTINGYEAR, :NEXTPARTYID
do suspend;
end
end