Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi IB: Stored Procedure zur Berechnung (https://www.delphipraxis.net/3564-ib-stored-procedure-zur-berechnung.html)

UGrohne 19. Mär 2003 08:30


IB: Stored Procedure zur Berechnung
 
Moin,
ich bin jetzt dazu übergegangen eine Stored Procedure für die Berechnung der Gesamtkosten eines Auftrags zu verwenden. Folgendermaßen sieht sie aus:
Code:
CREATE PROCEDURE auftragskosten(anr integer)
RETURNS (auftragssumme integer) AS
DECLARE VARIABLE summe integer;
DECLARE VARIABLE preis integer;
DECLARE VARIABLE menge integer;
DECLARE VARIABLE anrtemp integer;
BEGIN
summe=0;
FOR SELECT art.e_preis, pos.menge, pos.anr
    FROM positionen pos
    LEFT OUTER JOIN artikel art ON pos.artikel=art.artnr
    WHERE (pos.anr=:anr)
    INTO :preis, :menge, :anrtemp
DO
    summe=summe+(preis*menge);
    END;
:auftragssumme=:summe;
END;
Sie funktioniert, außer dass ich einen Fehler bekomm, wenn ich das oben ausführe (Listenindex ausserhalb gültigen Bereichs, oder so), aber sie ist richtig da.

Wenn ich sie jetzt aber ausführe, bekomme ich ein leeres Ergebnis zurück. Warum? Hab auch schon auftragssumme und summe ohne : gehabt, ist auch nix anderes. Wer kann mir den erlösenden Tipp geben?

Gruß

Lemmy 19. Mär 2003 09:35

Hi,

wie wärs mit folgendem:
Code:
CREATE PROCEDURE auftragskosten(anr integer)
RETURNS (auftragssumme integer) AS

BEGIN

FOR SELECT SUM(art.e_preis*pos.menge)
    FROM positionen pos
    LEFT OUTER JOIN artikel art ON pos.artikel=art.artnr
    WHERE (pos.anr=:anr)
    INTO :auftragssumme
DO
  SUSPEND;
    END
END^
1. Die Summe müsste jetzt auch so berechnet werden können.

2. Um Daten von der SP an die aufrufende Stelle zu übertragen wird ein SUSPEND; oder EXIT; benötigt!!!

Grüße
Lemmy

UGrohne 19. Mär 2003 09:56

Hmmm, wär auch ne Möglichkeit gewesen :wink:
Danke, funktioniert einwandfrei

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz