![]() |
Was sind stored procedures?
Ich habe jetzt selbts mit der Datenbankprogrammierung angefangen und jetzt frage ich mich, was stored procedures sind?
|
Re: Was sind stored procedures?
Zitat:
Aber MySQL kann es imho noch nicht. mfG mirage228 |
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. |
Re: Was sind stored procedures?
Aha. Danke das war es dann auch schon. :thumb:
|
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 |
Re: Was sind stored procedures?
und damit der Luckie auch mal einen kleinen, abstrakten Bleistift zu Gesicht bekommt. ;)
SQL-Code:
Das Ganze war jetzt PL/SQL. Meiner Meinung nach sieht es aus wie ein Kreuzung zwischen C, Pascal und SQL.
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; 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... |
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
|
Re: Was sind stored procedures?
Zitat:
Wenn man sich so hässliche Sprachen wie T-SQL anguckt (@...@...@@@@...@@.@@@@....@ :mrgreen: ), dürfte PL/SQL für einen Delphianer noch recht lesbar sein. ;) |
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. |
Re: Was sind stored procedures?
|
Re: Was sind stored procedures?
Zitat:
|
Re: Was sind stored procedures?
Zitat:
Damit sollte man fast alle DBs mit einer Personal ansprechen können. |
Re: Was sind stored procedures?
Zitat:
|
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.
|
Re: Was sind stored procedures?
Zitat:
Sowas löst man meist mit einem Cron-Job. |
Re: Was sind stored procedures?
Kennt mySQL Trigger?
|
Re: Was sind stored procedures?
Zitat:
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. |
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:
oder:
SELECT Spalte 1
, (SELECT SUM(Spalte2) FROM Tabelle2) AS Summe -- Nested Select als Spalte! FROM Tabelle 1
SQL-Code:
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.
SELECT Spalte 1
FROM Tabelle 1 WHERE Spalte2 IN (SELECT Spalte3 FROM Tabelle3 WHERE Bedingung) -- Nested Select! Aus meiner Sicht spricht nichts gegen eine Verwendung von MySQL für Deine Zwecke. Gruß |
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') |
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ß |
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: ![]() Erläuterungen zu Triggern findest Du ebenfalls in einem der Dokumente. Ich habe mal die Links als Textdatei angehangen. mfg eddy |
Re: Was sind stored procedures?
Von ADS habe ich auch schon mal gehört.
|
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 04:57 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