AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi if Abfragen in stored Procedure
Thema durchsuchen
Ansicht
Themen-Optionen

if Abfragen in stored Procedure

Ein Thema von Nightfly · begonnen am 29. Mär 2004 · letzter Beitrag vom 29. Mär 2004
Antwort Antwort
Nightfly

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

if Abfragen in stored Procedure

  Alt 29. Mär 2004, 10: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
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: if Abfragen in stored Procedure

  Alt 29. Mär 2004, 10:36
Was für eine DB ist es denn?
Außerdem glaube ich kaum das diese Syntax stimmt:

SQL-Code:
SELECT ...
FROM ...
WHERE ...
INTO ...
So wäre es richtig.

SQL-Code:
SELECT ...
INTO ...
FROM ...
WHERE ...
Das kann sich aber von DB zu DB unterscheiden...
  Mit Zitat antworten Zitat
Nightfly

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

Re: if Abfragen in stored Procedure

  Alt 29. Mär 2004, 10:41
Es handelt sich um eine Firebird Datenbank. Die Syntax stimmt, denn wenn ich den if else block rausnehme funktioniert dir Prozedur Tadellos.

Ich benötige nun aber diese Abfrage,um Summenzeilen von gewöhnlichen unterscheiden zu können.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: if Abfragen in stored Procedure

  Alt 29. Mär 2004, 11:25
Hi NightFly,

versuch mal die Select Count Abfrage aus der If rauszunehmem

SQL-Code:
    DEZ FLOAT)
AS

DECLARE VARIABLE Anzahl INTEGER;

begin
  for select ID,BEZ from MAIN B where B.STELLE = :STELLE
  into :BEREICH, :BEZ do
  begin
    select count(*) from vorgabe where ID = :bereich into :Anzahl;
    if (Anzahl= 0) then
      begin
Habs jetzt gerade gesehen:
1. die Bedingung MUSS in einer Klammer stehen (solltest Du vielleicht erst mal testen ob das schon reicht).
2. Ein THEN sollte eigentlich auch irgendwann mal kommen

Grüße
Lemmy
  Mit Zitat antworten Zitat
Nightfly

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

Re: if Abfragen in stored Procedure

  Alt 29. Mär 2004, 12:15
gute Idee,hat geklappt,danke.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz