Funktion vs. Gespeicherte Prozedur in SQL Server

Definition:

  • Funktion: Eine Funktion in SQL Server ist eine gespeicherte Routine, die einen Wert zurückgibt. Sie kann Parameter akzeptieren, verarbeitet Daten und gibt dann einen Wert zurück, normalerweise basierend auf den Eingangsdaten.
  • Gespeicherte Prozedur: Eine gespeicherte Prozedur ist ebenfalls eine gespeicherte Routine, gibt jedoch keinen Wert zurück. Stattdessen kann sie eine oder mehrere Operationen ausführen, wie das Abrufen, Aktualisieren, Einfügen oder Löschen von Daten.

Hauptunterschiede:

  1. Rückgabewert: Wie bereits erwähnt, gibt eine Funktion immer einen Wert zurück, während eine gespeicherte Prozedur das nicht tut.
  2. Verwendung: Funktionen können innerhalb von SELECT-, WHERE- oder CASE-Anweisungen in SQL Server verwendet werden. Gespeicherte Prozeduren werden dagegen unabhängig aufgerufen und können nicht innerhalb von SELECT-Anweisungen verwendet werden.
  3. Transaktionsmanagement: In gespeicherten Prozeduren ist es möglich, Transaktionsmanagement-Methoden wie BEGIN TRANSACTION, COMMIT und ROLLBACK zu verwenden. In Funktionen ist dies nicht zulässig.

Einfaches Beispiel:

  • Funktion:
  CREATE FUNCTION GetTotalOrders(@KundenID INT)
  RETURNS INT
  AS
  BEGIN
      RETURN (SELECT COUNT(*) FROM Bestellungen WHERE KundenID = @KundenID)
  END
  • Gespeicherte Prozedur:
  CREATE PROCEDURE InsertNewKunde
  @Name NVARCHAR(100),
  @Adresse NVARCHAR(255)
  AS
  BEGIN
      INSERT INTO Kunden(Name, Adresse) VALUES (@Name, @Adresse)
  END

In diesem Beispiel gibt die Funktion “GetTotalOrders” die Gesamtzahl der Bestellungen für einen bestimmten Kunden zurück. Die gespeicherte Prozedur “InsertNewKunde” fügt einen neuen Kunden in die Datenbank ein.


Zusammenfassend lässt sich sagen, dass sowohl Funktionen als auch gespeicherte Prozeduren ihre eigenen spezifischen Anwendungen in SQL Server haben. Beide sind für die Datenmanipulation und -verarbeitung wichtig, haben aber unterschiedliche Anwendungs- und Nutzungsbereiche. Es ist entscheidend, den richtigen Typ für den richtigen Anwendungsfall zu wählen.