AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Wann Stored Procedure nutzen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wann Stored Procedure nutzen?

Ein Thema von fkerber · begonnen am 10. Mär 2011 · letzter Beitrag vom 12. Mär 2011
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#1

Wann Stored Procedure nutzen?

  Alt 10. Mär 2011, 18:27
Datenbank: Firebird • Version: 2.5 • Zugriff über: IbDac
Hi,

eine (vielleicht doofe) Frage:
Wann setze ich Stored Procedures ein und wann nicht?

Nehmen wir folgendes Beispiel:
Ich mache ein Insert in eine Tabelle und lasse mir die erzeugte (Generator, Trigger) ID zurückgeben und füge diese zusammen mit anderen Daten in eine zweite Tabelle ein.
Das habe ich jetzt momentan in einer SP ausgelagert, sodass ich nur einen Aufruf habe.
Da hätte ich jetzt spontan gesagt, dass es sinnvoll war, das so "auszulagern". (Oder etwa schon nicht?)

Jetzt ist aber die Frage für mich, ab "wann" macht man ne SP? Sobald es über ein schnödes Insert/Update/Delete hinausgeht?
Oder erst ab einer gewissen Komplexität? Und da wäre dann die Frage, wie definiert sich / ihr das?


LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#2

AW: Wann Stored Procedure nutzen?

  Alt 10. Mär 2011, 19:16
Naja eine Stored Procedure ist immer dann sinnvoll wenn du den selben "langen" Code öfters aufrufen musst. Du erhöhst damit die Geschwindigkeit deiner Anwendung (wenn auch nur minimal) weil der Datenaustausch der Anwendung und des DBMS einfach gesagt auf eine zeile (CALL oder EXECUTE) beschränkt wurde.

Das ist aufjedenfall schonmal ein Grund
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Wann Stored Procedure nutzen?

  Alt 10. Mär 2011, 19:44
Bei der Datenhaltung (Insert/Update/Delete) wäre es
- Performance
- Gewährleistung der Integrität (komplexe Insert, - Update, .. wo referentielle Integrität und Constraints aufhören)
- daraus abgeleitet oder ähnlich, die Schaffung eines scharf definierten Interfaces (wenn nötig)

Bei Datenverarbeitung
- zentrale, gezielte, definierte, performante Datenverarbeitung

Gegenanzeigen:
breite Interfaces/Parameterlisten
Bei Tabellen mit sehr vielen Feldern ist es angenehm, diese normal per SQL nach Bedarf zu bearbeiten. Wenn also die Datenqualität nicht gefährdet ist, gern ohne Stored Proc.

Ach und noch was, bevor ich irgendeine Logik im Client hab, dann doch lieber auch eine Stored Proc. Es sei denn das hat taktische Gründe ...
Gruß, Jo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Wann Stored Procedure nutzen?

  Alt 10. Mär 2011, 19:47
Es entfällt auch die "Kompillierung" der Abfarge und die Bildung des Plans
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

AW: Wann Stored Procedure nutzen?

  Alt 10. Mär 2011, 19:47
Dann, wenn längere Berechnungen ausgeführt werden müssen. Mit Rückgabewerten etc.

Ganz anderes Einsatzgebiet :

Code:
  AENDERN = -1;
  SELECT ID FROM TABLEX WHERE ID_X= :ID_X INTO :AENDERN;
  IF (AENDERN < 0) THEN BEGIN
    INSERT INTO TABLEX (ID_Y) VALUES (:ID_Y);
  END
  ELSE BEGIN
    UPDATE TABLEX SET ID_Y = :ID_Y;
  END
Da soll die DB gefälligst selber wissen, ob Update oder Insert nötig ist.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Wann Stored Procedure nutzen?

  Alt 10. Mär 2011, 19:51
Wobei das auch mit einem Update or insert gehen würde
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

AW: Wann Stored Procedure nutzen?

  Alt 10. Mär 2011, 19:53
Und das ein Beispiel ist,
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#8

AW: Wann Stored Procedure nutzen?

  Alt 10. Mär 2011, 20:25
Hi,

danke für eure Antworten.
Dann frage ich mal noch ander:
Wann sollte man keine SP benutzen, bzw. was ist der Nachteil bei dem, was jobo hier ansprach:

Gegenanzeigen:
breite Interfaces/Parameterlisten
Bei Tabellen mit sehr vielen Feldern ist es angenehm, diese normal per SQL nach Bedarf zu bearbeiten. Wenn also die Datenqualität nicht gefährdet ist, gern ohne Stored Proc.


LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Wann Stored Procedure nutzen?

  Alt 10. Mär 2011, 20:28
Bei variabler Anzahl von Parametern (in und/oder out)
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Wann Stored Procedure nutzen?

  Alt 10. Mär 2011, 20:34
Hallo,

1. Nachteil ist die Pflege.
Gerade, wenn eine SP1 eine SP2 benutzt und man in der SP die Parameter ändert
-> rumms

2. Nachteil
wieder Pflege
Ändern einer SP (neuer Parameter).
Woran erkennt man, dass die SP schon geändert wurde ?
OK, System Tables, wer es weiss
Hier hilft nur genaue Doku und Mitführen einer DB-Id

3. Nachteil war (bis vor 2.5 ?), dass man keine Domains als Parameter verwenden konnte.


Was als Vorteil noch nicht genannt wurde (oder ich habe es überlesen).
Thema Sicherheit
Ich kann einem User die Rechte an einer Tabelle komplett wegnehmen,
ihm aber die Rechte an einer SP geben, die eine paar Spalten, oder was auch immer
dieser Tabelle zurückgibt.



Heiko
aus dieser Tabelle

Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 13:36 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