Stored Procedure
Eine Stored Procedure ist eine Sammlung von SQL-Befehlen oder kann als ein Unterprogramm mit einem bestimmten Namen beschrieben werden, das in der Datenbank gespeichert ist. Der Prozess, den eine Stored Procedure ausführt, besteht darin, Eingabeparameter zu empfangen, Werte in Form von Ausgabeparametern an den Aufrufer zurückzugeben und Datenbearbeitungsoperationen in der Datenbank durchzuführen, die von einem Programm wie einem Trigger oder einer anderen Stored Procedure ausgeführt werden. Die Verwendung von Stored Procedures hat mehrere Vorteile:
- Verbessert die Leistung der Anwendung, da Stored Procedures schneller ausgeführt werden als unkompilierte SQL-Befehle, die von der Anwendung gesendet werden.
- Reduziert den Netzwerkverkehr zwischen Datenbank und Anwendung, da keine unkompilierten SQL-Anweisungen gesendet werden müssen.
- Kann wiederholt und transparent in allen Anwendungen verwendet werden.
Trotzdem hat die Verwendung von Stored Procedures auch Nachteile:
- Debuggen ist nicht möglich.
- Erhöht die Belastung der Serverhardware.
- Das Schreiben ist nicht einfach und erfordert spezifisches Wissen.
Syntax bei Stored Procedures
Die Syntax, die bei Stored Procedures vorkommt:
- Syntax zum Schreiben einer Stored Procedure
DELIMITER // CREATE PROCEDURE procedure_name() BEGIN SQL-Abfrage END // DELIMITER ;
- Syntax zum Aufrufen einer Stored Procedure
CALL procedure_name()
- Syntax zum Deklarieren einer Variablen in einer Stored Procedure
DECLARE variablen_name datentyp(laenge) DEFAULT wert;
- Syntax einer Stored Procedure mit Parametern
Es gibt drei Modi für Parameter:
- IN, der Standardmodus, bei dem Änderungen innerhalb der Stored Procedure den Parameter nicht beeinflussen.
- OUT, ein Modus, der den Parameterwert ändert und an den Aufrufer zurücksendet.
- INOUT, ein Modus, der IN und OUT kombiniert.
Beispielsyntax für die Definition einer Stored Procedure mit Parametern:
DELIMITER // CREATE PROCEDURE procedure_name([modus] [parameter] [datentyp]) BEGIN SQL-Abfrage END // DELIMITER ;Beispielsyntax für den Aufruf einer Stored Procedure mit Parametern:
CALL procedure_name([parameter_wert])
Cursor
Ein Cursor ist ein Objekt in einer Datenbank, das zur Verarbeitung spezifischer SQL-Anweisungen verwendet wird, oder kann als eine Variable beschrieben werden, die das Ergebnis einer Abfrage mit mehr als einer Zeile oder einem Datensatz enthält. Ein Cursor kann über die Anzahl der Zeilen in einer Tabelle iterieren. Es gibt mehrere Eigenschaften eines Cursors:
- Kann nicht aktualisiert werden (schreibgeschützt).
- Ein Cursor bewegt sich nur in eine Richtung (nicht scrollbar).
- Das Aktualisieren der Tabelle, auf die der Cursor verweist, wird nicht empfohlen, da dies unerwünschte Ergebnisse liefern kann (asensitiv).
Syntax bei Cursors
Die Syntax, die bei Cursors vorkommt:
Es gibt mehrere Schritte beim Erstellen eines Cursors:
- Declare, der Schritt zum Deklarieren des Cursors, mit der Syntax:
DECLARE cursor_name CURSOR FOR
SELECT_Anweisung;
- Open, der Schritt zum Öffnen oder Aktivieren des Cursors, mit der Syntax:
OPEN cursor_name;
- Fetch, der Schritt zum Abrufen von Daten aus dem Cursor und anschließenden Speichern in einer Variablen, mit der Syntax:
FETCH cursor_name INTO variablen_liste
- Close, der Schritt zum Deaktivieren des Cursors, mit der Syntax:
CLOSE cursor_name
Unterschiede zwischen Stored Procedure und Cursor
Der Unterschied zwischen einer Stored Procedure und einem Cursor besteht darin, dass eine Stored Procedure nur Deklarationsbefehle von MySQL enthält, während ein Cursor das Abfrageergebnis enthält und auch als Zeiger auf dieses Ergebnis fungiert. Dies ermöglicht es dem Cursor, komplexe Operationen auszuführen, die von einer Stored Procedure nicht durchgeführt werden können. Eine davon ist die Iteration über Datensätze.

