![]() |
Summe mit Stored Procedure
Hi,
ich muß 3 Spalten einer Table aufaddieren. In einer Zeile ! Nicht untereinander. Also 3 Felder jedes Datensatzes als Summe brauche ich. Hierzu wollte ich eine Stored Procedure in der DB anlegen, die den Wert zurückliefert. Irgendwie bin ich jetzt aber mit den Input/Output-Parametern / Variablen durcheinander geraten. Hat jemand ein kleines Beispiel ? |
Re: Summe mit Stored Procedure
Hallo Hansa,
das hört sich wie ein typischer Anwendungsfall der COMPUTED BY Klausel an:
SQL-Code:
Dann bräuchtest du keine Stored Procedure.
CREATE TABLE test
(zahl1 INTEGER, zahl2 INTEGER, zahl3 INTEGER, dieSumme COMPUTED BY (zahl1+zahl2+zahl3)) |
Re: Summe mit Stored Procedure
Stimmt ! So gehts auch. Aber momentan mit diesem Effekt : Beim Insert wird der Wert nicht berechnet. Bei einem Update dagegen schon. Wieso das ?
Noch eine prinzipielle Frage : Wird die Spalte physikalisch in der DB angelegt oder nur logisch ? Obiger Effekt deutet eher darauf hin, daß sie tatsächlich in der DB vorhanden ist. Dann hätte ich eine unnötige Redundanz. Und das führt (wie hier) zu seltsamen Nebeneffekten. In diesem Fall wäre das Computed by schon geeignet, wenn es denn fehlerfrei funktioniert. Zwischenzeitlich habe ich aber auch eine Stored Procedure. Die macht, was ich will, aber ich komme von Delphi aus nicht an den ermittelten Wert. Es müßte doch mit "select * from Proc" gehen, oder nicht ? Nur, wohin muß das überhaupt ? |
Re: Summe mit Stored Procedure
Warum nicht einfach das Ganze in einer Abfrage berechnen?
Ich finde es ziemlich sinnlos bei jedem UPDATE/INSERT das olle Feld zu berechnen. Könnte ein neuer Eintrag in der Liste werden: "Wie bremse ich am einfachsten meine DB aus" :mrgreen: |
Re: Summe mit Stored Procedure
Wie Robert_G schon fragt, warum nicht:
SQL-Code:
bzw. auf Satzebene:
SELECT SUM(Feld1) As Summe1
, SUM(Feld2) As Summe2 , SUM(Feld3) As Summe3 , SUM(Feld1)+SUM(Feld2)+SUM(Feld3) As SummeGesamt FROM Tabelle
SQL-Code:
:?:
SELECT *
, Feld1+Feld2+Feld3 AS FeldSumme FROM Tabelle Gruß |
Re: Summe mit Stored Procedure
Aha, jo. 8) Hätte ich auch selber drauf kommen können. Ein extra Feld mitschleppen wollte ich nämlich eigentlich nicht. Jetzt braucht ihr mir nur noch zu sagen, warum ich über Stored Procedure den Wert nicht erhalte. :-D
|
Re: Summe mit Stored Procedure
DB?
|
Re: Summe mit Stored Procedure
IB :mrgreen:
|
Re: Summe mit Stored Procedure
Hi Hansa,
SQL-Code:
So sollte es gehen, allerdings ohne Gewehr, da heute Sonntag und ich keine FB zur Hand habe....
CREATE PROCEDURE Summe
RETURNS (Spalte1 NUMERIC(18), Spalte2 NUMERIC(18), Spalte2 NUMERIC(18)) AS BEGIN FOR SELECT SUM(Saplte1), SUM(Spalte2), SUM(Spalte3) FROM Tabelle INTO Spalte1, Spalte2, Spalte3 DO SUSPEND; END^ Grüße Lemmy |
Re: Summe mit Stored Procedure
Mal eine Frage eines PL/SQL'lers, dessen Prozeduren nur über Umwege Ergnismengen ausspucken:
Wozu muss hier, auf Teufel komm raus, eine SP benutzt werden, wenn auch ein simples SELECT-Statement den Job erledigen kann? Das ist jetzt schon das x'te Mal, dass ich mich das Frage... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 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 by Thomas Breitkreuz