Einzelnen Beitrag anzeigen

Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#1

if Abfragen in stored Procedure

  Alt 29. Mär 2004, 11:14
Also,es geht um folg. Prozedur, die if Bedingung bekomm ich einfach nich zum laufen

SQL-Code:
CREATE PROCEDURE AUSWERTUNG (
    STELLE CHAR(9),
    JAHR INTEGER)
RETURNS (
    BEREICH INTEGER,
    BEZ CHAR(32),
    JAN FLOAT,
    FEB FLOAT,
    MAR FLOAT,
    APR FLOAT,
    MAI FLOAT,
    JUN FLOAT,
    JUL FLOAT,
    AUG FLOAT,
    SEP FLOAT,
    OKT FLOAT,
    NOV FLOAT,
    DEZ FLOAT)
AS
begin
  for select ID,BEZ from MAIN B where B.STELLE = :STELLE
  into :BEREICH, :BEZ do
  begin
    if (select count(*) from vorgabe where ID = :bereich ) = 0 /* Fehler,k.a. warum. es soll halt folg. code ausgeführt werden,wenn es zur variable bereich keinen passenden datensatz in der tabelle vorgabe gibt) */
      begin
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=1)
      into :JAN;
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=2)
      into :FEB;
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=3)
      into :MAR;
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=4)
      into :APR;
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=5)
      into :MAI;
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=6)
      into :JUN;
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=7)
      into :JUL;
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=8)
      into :AUG;
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=9)
      into :SEP;
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=10)
      into :OKT;
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=11)
      into :NOV;
      select sum(R_ANZ * R_EPREIS) from RECHNUNG R
      where (R.bereich = :BEREICH) and (R.stelle = :Stelle) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)=12)
      into :DEZ;
      end;
      else
      begin
      /* So,und hier sollen dann, WENN die variable Bereich einen Datensatz in Vorgabe hat,alle Zeilen, die zu dem aktuellen bereich gehören,aufsummiert werden */
      end;
     suspend;
  end
end
Kann mir da vielleicht jemand weiterhelfen? Was genau passieren soll steht im Code in den kommentaren.
  Mit Zitat antworten Zitat