Kontakt

Nutzen Sie dieses Kontaktformular oder schreiben Sie mir direkt per E-Mail.

7. November 2019

Anleitung: Benutzerdefinierte Funktionen im MS SQL Server

Jan Trummel - Coach für  Excel und  Power BI

Jan Trummel
Trainer für Excel und Power BI - erzählt in diesem Blog wie du deine Arbeit effektiver erledigen kannst.

Allgemein

Du kannst das Video nicht sehen, weil du der Anzeige von Youtube nicht zugestimmt hast. Du kannst die Einstellungen in der Datenschutzerklärung ändern. Oder die Ausgabe von Youtube-Videos direkt hier erlauben.

Ich benutze sehr gerne Funktionen, um Programmcode den ich regelmäßig benötige, auszulagern und dann bei Bedarf einfach aufzurufen. Das ist für mich als Entwickler viel weniger Arbeit, als wenn ich den Code jedes Mal wenn ich ihn benötige von Hand schreibe.

Die hier vorgestellte Funktion (natürlich ein ganz simples Beispiel) gibt mir den Namen einer Person aus der Tabelle Person.Person (ich nutze die Datenbank „Adventureworks2014“) zurück, wobei diese über ihre ID ausgewählt wird. Die ID kann ich der Funktion über einen Parameter übergeben. Dadurch wird die Funktion noch flexibler und kann bei jedem Aufruf ein anderes Ergebnis zurückliefern.

Die von mir im Video erstellte Funktion ist eine sogenanntes Skalarwertfunktion, was bedeutet, dass sie nur einen einzigen Wert zurückliefert. Wenn Sie eine solche Funktion bauen, müssen Sie darauf achten, dass als Rückgabewert wirklich nur ein einziger Wert geliefert wird und keinesfalls mehrere Werte! Sonst kommt es nämlich zu einem Fehler. In diesem Beispiel darf die SQL-Anweisung also nur einen einzigen Wert liefern.

Es gibt auch Funktion, die mehrere Werte liefern können. Diese Funktion heißen dann Inlinefunktionen oder Tabellenwertfunktionen. Dort weicht das Codegerüst jedoch vom hier vorgestellten ab.

Hier die Syntax zum Erstellen einer benutzerdefinierten Skalarwertfunktion. Wenn mehrere Parameter übergeben werden, so werden diese einfach durch Kommas getrennt:

CREATE FUNCTION funktionsname
(
   [ @parameter_1 datentyp,
   ...,
   @parameter_n datentyp ]
)
RETURNS rückgabedatentyp
AS
BEGIN
   ...anweisungen...
   RETURN rückgabewert;
END;

Beim Aufruf einer Funktion müssen Sie darauf achten, dass das Schema, in welchem die Funktion gespeichert ist (meistens wahrscheinlich dbo) mit genannt wird. Werden mehrere Parameter übergeben, so müssen Sie diese per Komma separieren.

SELECT schema.funktionsname(parameterliste);

In meinem Kurs „MS SQL Server – Programmierung“ zeige ich anhand von praxisnahen Beispielen, wie Funktionen im MS SQL Server effektiv und sinnvoll eingesetzt werden können.