![]() |
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:
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.
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; 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ß |
Hi,
wie wärs mit folgendem:
Code:
1. Die Summe müsste jetzt auch so berechnet werden können.
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^ 2. Um Daten von der SP an die aufrufende Stelle zu übertragen wird ein SUSPEND; oder EXIT; benötigt!!! Grüße Lemmy |
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