Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Was sind stored procedures? (https://www.delphipraxis.net/39159-sind-stored-procedures.html)

Luckie 29. Jan 2005 15:53


Was sind stored procedures?
 
Ich habe jetzt selbts mit der Datenbankprogrammierung angefangen und jetzt frage ich mich, was stored procedures sind?

mirage228 29. Jan 2005 15:55

Re: Was sind stored procedures?
 
Zitat:

Zitat von Luckie
Ich habe jetzt selbts mit der Datenbankprogrammierung angefangen und jetzt frage ich mich, was stored procedures sind?

Da sind sowas wie Prozeduren in Delphi. Damit kannst Du bestimmte Abläufe vereinfachen. :)
Aber MySQL kann es imho noch nicht.

mfG
mirage228

Robert_G 29. Jan 2005 15:56

Re: Was sind stored procedures?
 
Daa sind Funktionen, die in der Datenbank kompiliert abgelegt werden (bei manchen auch nur der Text).
Sie laufen im Prozess der DB und haben auch eine Syntax, die Datenmaipulationen stark vereinfacht.

Luckie 29. Jan 2005 15:57

Re: Was sind stored procedures?
 
Aha. Danke das war es dann auch schon. :thumb:

Marcel Gascoyne 29. Jan 2005 18:19

Re: Was sind stored procedures?
 
Beim Speichern von Stored Procedures werden diese in der Regel nicht nur compiliert sondern auch optimiert. Die Datenbank weiss dann beim Aufruf gleich welche Indices verwendet werden müssen. Gerade in großen Datenbanken bringt dies einiges an Performancesteigerung.

Neben diesen normalen Procedures gibt es auch noch Trigger die Ereignisgesteuert ausgeführt werden, um z.b. einen Datensatz nach einem Insert oder Update noch zu manipulieren.

Gruß,
Marcel

Robert_G 29. Jan 2005 19:06

Re: Was sind stored procedures?
 
und damit der Luckie auch mal einen kleinen, abstrakten Bleistift zu Gesicht bekommt. ;)
SQL-Code:
create procedure SomeProcedure(aSomeValue in integer) is
  /* eine Konstante */
  Tab constant char(1) := Chr(9);

  /* Ein cursor, der einen Parameter nimmt und mit diesem Daten abfragt */
  cursor SelectSomething(iParameter in integer) is
    SELECT *
    FROM  XYZ
    WHERE SomeColumn = iParameter;

  /* ein Collection typ, bei der ein Element dem Typen einer Zeile des Cursors (und damit der Abfrage) entspricht */
  type TSomeCollection is table of SelectSomething%RowType;

  /* eine Variable dieser collection */
  SomeCollection TSomeCollection;

  /* ein Record mit Defninition siehe Collection ELement */
  SomeRecord    SelectSomething%RowType;
begin

  /* cursor öffnen und Abfrage vorbereiten */
  open SelectSomething(aSomeValue);

  /* Inhalt der Abfrage in die Collection schieben */
  fetch SelectSomething
    bulk collect
    into SomeCollection;

  /* Abfrage schließen */
  close SelectSomething;

  /* durch die Ergebnisse laufen (wenn es Datensätze gibt)*/
  if SomeCollection.Count > 0 then
    for i in SomeCollection.First .. SomeCollection.Last loop
      /* aktuelles Element in den Record kopieren */
      SomeRecord := SomeCollection(i);
      /* in die Kommandozeile ausgeben */
      DBMS_Output.Put_Line((i + 1) || Tab || SomeRecord.Column1 || Tab || SomeRecord.Column2);
    end loop;
  end if;
end;
Das Ganze war jetzt PL/SQL. Meiner Meinung nach sieht es aus wie ein Kreuzung zwischen C, Pascal und SQL.
Jede DB bringt ihre eigene Sprache mit. (MS SQL Server: T-SQL, InterBase/FireBird: PSQL, mySQL: nix :P ) Und alle sind komplett anders. :freak:

Edit: Tippfähler...

Hansa 29. Jan 2005 19:34

Re: Was sind stored procedures?
 
... womit Robert_G zunächst mal ein abschreckendes Beispiel für Oracle präsentiert hat. :mrgreen: Kein Wunder, daß Luckie mit DBs vorher nichts am Hut hatte. :P

Robert_G 29. Jan 2005 19:38

Re: Was sind stored procedures?
 
Zitat:

Zitat von Hansa
... womit Robert_G zunächst mal ein abschreckendes Beispiel für Oracle präsentiert hat. :mrgreen: Kein Wunder, daß Luckie mit DBs vorher nichts am Hut hatte. :P

Naja, so abschreckend ist es sicher nicht.
Wenn man sich so hässliche Sprachen wie T-SQL anguckt (@...@...@@@@...@@.@@@@....@ :mrgreen: ), dürfte PL/SQL für einen Delphianer noch recht lesbar sein. ;)

Hansa 29. Jan 2005 20:13

Re: Was sind stored procedures?
 
Luckie, das ist doch alles ganz einfach. Lasse dich nicht damit verwirren, das seien Prozeduren in Delphi. Mit MySQL das ist allerdings so ziemlich das schlechteste, was in Betracht kommt. Zumindest für Anfänger.

Was das genau ist, das hat sowieso noch keiner gesagt. Also, das ist eben eine Prozedur. :mrgreen: Und die wird in der DB gespeichert. Von Delphi aus ruft man die eben auf, wie eine normale Prozedur auch. Aber ich merke, so wird das nichts. Hier ein Bsp.:

// zu früh, bringt nichts.

Zuerst einmal gibt es SP ohne Rückgabewerte. Die benutze ich immer, um etwas abzuspeichern. D.h. es werden aus dem Delphi-Programm heraus Parameter übergeben an die SP und diese setzt sie dann in der SP ein und führt Berechnungen oder Aktionen aus. Manchmal braucht man auch Rückgabewerte von der SP. An die kommt man dann dran mit "Select * From LuckieSP".

[Edit]Beispiel entfernt.

Sharky 30. Jan 2005 12:34

Re: Was sind stored procedures?
 
Zitat:

Zitat von mirage228
....Aber MySQL kann es imho noch nicht....

Sollte die Version 5 können.

Luckie 30. Jan 2005 22:37

Re: Was sind stored procedures?
 
Zitat:

Zitat von Hansa
Mit MySQL das ist allerdings so ziemlich das schlechteste, was in Betracht kommt. Zumindest für Anfänger.

Und warum? Es ist wohl eine der wenigen Datenbanken die auch mit der Personal laufen.

Robert_G 1. Feb 2005 00:44

Re: Was sind stored procedures?
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Hansa
Mit MySQL das ist allerdings so ziemlich das schlechteste, was in Betracht kommt. Zumindest für Anfänger.

Und warum? Es ist wohl eine der wenigen Datenbanken die auch mit der Personal laufen.

Borland sollte es nicht verhindern können dass du zum Beispiel die TypLibs für ADO importierst. ;)
Damit sollte man fast alle DBs mit einer Personal ansprechen können.

Hansa 1. Feb 2005 01:23

Re: Was sind stored procedures?
 
Zitat:

Zitat von Luckie
Und warum? Es ist wohl eine der wenigen Datenbanken die auch mit der Personal laufen.

Eben, du kommst damit nicht sehr weit, 8)

Luckie 1. Feb 2005 01:46

Re: Was sind stored procedures?
 
Dann zeig mir mal bitte die Grenzen auf. Was kann ich denn damit nicht machen? Ok, mySQL kennt keine stored procedures. Und was kann es noch alles nicht? Desweiteren will ich ja auch erstmal nur lernern mit SQL Datenbanken umzugehen. Ich brauche nicht deswegen auch nicht die allertollsten Features.

Catbytes 1. Feb 2005 01:52

Re: Was sind stored procedures?
 
Zitat:

Zitat von Marcel Gascoyne
Neben diesen normalen Procedures gibt es auch noch Trigger die Ereignisgesteuert ausgeführt werden, um z.b. einen Datensatz nach einem Insert oder Update noch zu manipulieren.

Gruß,
Marcel

Und neben den Triggern, gibt es noch die Cron-Jobs, die meist zeitgesteuert sind. z.B. "jeden Morgen um 08:00 Uhr soll irgend ein Index neu erzeugt werden" oder sowas.

Sowas löst man meist mit einem Cron-Job.

Luckie 1. Feb 2005 01:54

Re: Was sind stored procedures?
 
Kennt mySQL Trigger?

Robert_G 1. Feb 2005 06:59

Re: Was sind stored procedures?
 
Zitat:

Zitat von Luckie
Kennt mySQL Trigger?


MySQL ist aber sicher eine recht gute Anfänger-DB. Wenn du mittlerweile auch noch in der DB programmieren willst wäre FireBird eine gute Wahl.

Leuselator 1. Feb 2005 08:08

Re: Was sind stored procedures?
 
Zu den Grenzen:
Neben StoredProcedures kann MySQL gegenwärtig auch keine sogenannten "Nested Selects" (auch: "Subselects") verarbeiten. Ausgewachsene DBMS bieten die Möglichkeit, Selects zu schachteln und Selects als Spalten zu benutzen. Beispiel:
SQL-Code:
SELECT Spalte 1
     , (SELECT SUM(Spalte2)
          FROM Tabelle2) AS Summe -- Nested Select als Spalte!
  FROM Tabelle 1
oder:
SQL-Code:
SELECT Spalte 1
  FROM Tabelle 1
 WHERE Spalte2 IN (SELECT Spalte3 
                     FROM Tabelle3 
                    WHERE Bedingung) -- Nested Select!
die meisten dieser NestedSelects lassen sich auch als JOINS umformulieren (viele Wege nach Rom), aber im Alltag sind Nested Selects schon hilfreich, da sie meist einfacher zu formulieren sind.

Aus meiner Sicht spricht nichts gegen eine Verwendung von MySQL für Deine Zwecke.

Gruß

Sharky 1. Feb 2005 08:18

Re: Was sind stored procedures?
 
Hai Leuselator,
also mein mySQL 4.1 hat mit dieser Abfrage kein Problem ;-)
SQL-Code:
SELECT vorname
FROM test1
WHERE vorname IN (SELECT vorname
                  FROM test2 
                  WHERE name = 'Sharky')

Leuselator 1. Feb 2005 08:31

Re: Was sind stored procedures?
 
Oho - dann ist MySQL wieder ein Stück weiter gekommen als mir bekannt war...
Also den 2. Teil oben vergessen.
Gruß

eddy 1. Feb 2005 08:53

Re: Was sind stored procedures?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Lucki,

ich kann zwar mit SP bisher auch noch nicht viel anfangen, aber vielleicht nützt Dir folgendes:

Toolbox 03/2002: Advantage Extended Procedures

Erläuterungen zu Triggern findest Du ebenfalls in einem der Dokumente. Ich habe mal die Links als Textdatei angehangen.

mfg
eddy

Luckie 1. Feb 2005 09:26

Re: Was sind stored procedures?
 
Von ADS habe ich auch schon mal gehört.

eddy 1. Feb 2005 09:35

Re: Was sind stored procedures?
 
Hallo Lucki,

wirf' ruhig mal einen Blick mehr drauf. Ich habe es als Ersatz für meine auf BDE basierende Paradox-Datenbanken gewählt.

Bisher habe ich keine Nachteile gegenüber Pardox feststellen können, ganz im Gegenteil!

mfg
eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 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