Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Summe mit Stored Procedure (https://www.delphipraxis.net/19460-summe-mit-stored-procedure.html)

Hansa 3. Apr 2004 19:21


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 ?

MrSpock 4. Apr 2004 09:11

Re: Summe mit Stored Procedure
 
Hallo Hansa,

das hört sich wie ein typischer Anwendungsfall der COMPUTED BY Klausel an:

SQL-Code:
CREATE TABLE test
  (zahl1 INTEGER,
   zahl2 INTEGER,
   zahl3 INTEGER,
   dieSumme COMPUTED BY (zahl1+zahl2+zahl3))
Dann bräuchtest du keine Stored Procedure.

Hansa 4. Apr 2004 13:18

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 ?

Robert_G 4. Apr 2004 13:48

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:

Leuselator 4. Apr 2004 13:52

Re: Summe mit Stored Procedure
 
Wie Robert_G schon fragt, warum nicht:
SQL-Code:
SELECT SUM(Feld1) As Summe1
     , SUM(Feld2) As Summe2
     , SUM(Feld3) As Summe3
     , SUM(Feld1)+SUM(Feld2)+SUM(Feld3) As SummeGesamt
  FROM Tabelle
bzw. auf Satzebene:
SQL-Code:
SELECT *
     , Feld1+Feld2+Feld3 AS FeldSumme
  FROM Tabelle
:?:
Gruß

Hansa 4. Apr 2004 14:06

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

Leuselator 4. Apr 2004 14:08

Re: Summe mit Stored Procedure
 
DB?

Hansa 4. Apr 2004 15:11

Re: Summe mit Stored Procedure
 
IB :mrgreen:

Lemmy 4. Apr 2004 16:41

Re: Summe mit Stored Procedure
 
Hi Hansa,

SQL-Code:
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^
So sollte es gehen, allerdings ohne Gewehr, da heute Sonntag und ich keine FB zur Hand habe....

Grüße
Lemmy

Robert_G 4. Apr 2004 17:35

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 19:09 Uhr.
Seite 1 von 2  1 2      

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