"localhost:/firebird/data/ILICHEVSK2.FDB". ��������� Previous topic Chapter index Next topic

GETPARTYID_

 

������� ���������

��������

���

��������

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

 

     Previous topic Chapter index Next topic