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.


Shares:
Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert