Erklärung von Stored Procedures und Cursors in Datenbanken

WI
Wilan
3 Min. Lesezeit
Stored Procedure & Cursor

Stored Procedure

Eine Stored Procedure ist eine Sammlung von SQL-Anweisungen oder kann als ein benanntes Unterprogramm bezeichnet werden, das in der Datenbank gespeichert ist.

Der Prozess einer Stored Procedure besteht darin, Parameter entgegenzunehmen, Werte in Form von Ausgabeparametern an den Aufrufer zurückzugeben und Datenverarbeitungsvorgänge 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 bietet mehrere Vorteile:

  • Verbesserung der Anwendungsleistung, da die erstellte Stored Procedure schneller ausgeführt wird als SQL-Anweisungen, die von der Anwendung gesendet und noch nicht kompiliert wurden.
  • Verringerung des Netzwerkverkehrs zwischen Datenbank und Anwendung, da kein unkompilierter SQL-Code gesendet werden muss.
  • Kann wiederholt und transparent in allen Anwendungen verwendet werden.

Trotzdem hat die Verwendung von Stored Procedures auch einige Nachteile:

  • Debugging ist nicht möglich.
  • Erhöhung der Server-Hardware-Last.
  • Das Schreiben ist nicht einfach und erfordert spezifisches Wissen.

Syntax der Stored Procedure

Die Syntax einer Stored Procedure ist wie folgt:

Syntax zum Erstellen einer Stored Procedure

DELIMITER //

CREATE PROCEDURE nama_procedure()
BEGIN
    query sql
END //

DELIMITER ;

Syntax zum Aufrufen einer Stored Procedure

CALL nama_procedure();

Syntax zum Deklarieren von Variablen in einer Stored Procedure

DECLARE nama_variable tipedata(panjang) DEFAULT nilai;

Syntax einer Stored Procedure mit Parametern

Es gibt drei Modi für Parameter:

  • IN
    Standardmodus des Parameters, bei dem alle Änderungen in der Stored Procedure den Parameter nicht beeinflussen.

  • OUT
    Modus, der den Parameterwert ändert und an den Aufrufer zurückgibt.

  • INOUT
    Kombinationsmodus aus IN und OUT.

Beispielsyntax zum Definieren einer Stored Procedure mit Parametern

DELIMITER //

CREATE PROCEDURE nama_procedure(
    [mode] [parameter] [tipe_data]
)
BEGIN
    query sql
END //

DELIMITER ;

Beispielsyntax zum Aufrufen einer Stored Procedure mit Parametern

CALL nama_procedure([nilai_parameter]);

Cursor

Ein Cursor ist ein Datenbankobjekt, das zur Verarbeitung spezifischer SQL-Anweisungen verwendet wird, oder kann als eine Variable betrachtet werden, die Abfrageergebnisse mit mehr als einer Zeile oder einem Datensatz enthält.

Ein Cursor kann über die Zeilen einer Tabelle iterieren. Es gibt mehrere Eigenschaften von Cursorn:

  • Es können keine Aktualisierungen durchgeführt werden (nur lesen).
  • Der Cursor kann nur in eine Richtung bewegt werden (nicht scrollbar).
  • Es wird nicht empfohlen, die vom Cursor referenzierte Tabelle zu aktualisieren, da dies zu unerwünschten Ergebnissen führen kann (asensitive).

Cursor-Syntax

Die Erstellung eines Cursors erfolgt in mehreren Schritten:

1. Deklaration

Schritt zur Deklaration des Cursors, mit der Syntax:

DECLARE nama_cursor CURSOR FOR
pernyataan_SELECT;

2. Öffnen

Schritt zum Öffnen oder Aktivieren des Cursors, mit der Syntax:

OPEN nama_cursor;

3. Fetch

Schritt zum Abrufen von Daten aus dem Cursor und anschließendem Speichern in einer Variablen, mit der Syntax:

FETCH nama_cursor INTO daftar_variabel;

4. Schließen

Schritt zum Deaktivieren des Cursors, mit der Syntax:

CLOSE nama_cursor;

Unterschied zwischen Stored Procedure und Cursor

Der Unterschied zwischen einer Stored Procedure und einem Cursor besteht darin, dass eine Stored Procedure nur Deklarationsanweisungen von MySQL enthält, während ein Cursor die Abfrageergebnisse enthält und gleichzeitig als Pointer auf die Abfrageergebnisse fungiert.

Dies ermöglicht es dem Cursor, komplexe Anweisungen auszuführen, die von einer Stored Procedure nicht durchgeführt werden können. Eine davon ist das Iterieren über Datensätze.

W

Geschrieben von

Wilan

Kontributor tetap Bali Island Tekno yang aktif berbagi pengetahuan seputar teknologi, pemrograman, dan dunia rekayasa perangkat lunak.

Zurück zur Startseite Aktualisiert am: 5. Juni 2026