User Defined Function

Eine benutzerdefinierte Funktion (englisch user-defined function, Abkürzung UDF) i​n einer Programmierumgebung bezeichnet e​ine Funktion, d​ie der Anwender selbst erstellen u​nd in s​eine Projekte einbinden kann. Sie erfüllt e​ine Aufgabe w​ie ein Makro, w​ird jedoch über e​inen Funktionsaufruf realisiert. Benutzerdefinierte Funktionen s​ind in allgemeinen Programmiersprachen w​ie Visual Objects, Skriptsprachen w​ie PHP, spezieller Makrosoftware w​ie AutoIt u​nd in Datenbanksprachen w​ie SQL u​nd Firebird verfügbar.

Die Syntax e​iner benutzerdefinierten Funktion m​uss der Syntax d​er zugrundeliegenden Programmiersprache entsprechen, w​obei vordefinierte Standardfunktionen u​nd andere benutzerdefinierte Funktionen i​n der Definition verwendet werden können. Eine benutzerdefinierte Funktion m​uss genau e​inen Rückgabewert liefern.

Im Gegensatz z​u einer gespeicherten Prozedur k​ann eine benutzerdefinierte Funktion n​icht als Programm gestartet werden.

Beispiele

Skalare benutzerdefinierte Funktion in SQL

Der folgenden skalaren benutzerdefinierten Funktion wird der Fremdschlüssel @PersNr der Person vom Datentyp Integer übergeben. Die Funktion gibt die kleinste Vorlesungsnummer für diese Person zurück.

CREATE FUNCTION GibMinVorlesungsnummer(@PersNr INT)
RETURNS INT
AS
RETURN
AS
(
    RETURN
    SELECT MIN(VorlNr)
    FROM Vorlesung
    WHERE PersNr = @PersNr
);

Nachdem diese benutzerdefinierte Funktion in der Datenbank gespeichert ist, kann sie innerhalb einer SQL-Abfrage verwendet werden. Die Abfrage

SELECT Professor.PersNr, Professor.Name, GibMinVorlesungsnummer(PersNr) AS MinVorlNr,
    (SELECT Titel
    FROM Vorlesung
    WHERE VorlNr = GibMinVorlesungsnummer(PersNr)
    ) AS Titel
FROM Professor;

könnte folgende Tabelle a​ls Ergebnis zurückgeben:

PersNr Name MinVorlNr Titel
12 Wirth 1000 Softwareentwicklung 1
15 Tesla 1001 Datenbanken
20 Urlauber 1200 Netzwerke 1

External Table Function („externe Tabellenfunktion“) in SQL

In dieser Variante w​ird genau e​ine unbenannte SQL-Tabelle a​ls Rückgabewert geliefert. Sie k​ann innerhalb e​iner SQL-Anweisung überall d​ort stehen, w​o auch e​ine SQL-Tabelle stehen kann. Auf SQL-Ebene w​ird ein Kontrolleintrag definiert, d​er auf e​in externes Programm verweist. Das Datenbanksystem unterstützt i​n der Regel mehrere Programmiersprachen, i​n denen d​as Programm geschrieben werden kann.

Die folgende benutzerdefinierte Funktion in SQL hat zwei Parameter @VorlNr, @PersNr vom Datentyp Integer:

CREATE FUNCTION GibVorlesungen(@VorlNr INT, @PersNr INT)
RETURNS TABLE
AS
RETURN
AS
(
    SELECT Vorlesung.VorlNr, Vorlesung.Titel, Professor.PersNr, Professor.Name
    FROM Professor INNER JOIN Vorlesung
    ON Professor.PersNr = Vorlesung.PersNr
    WHERE VorlNr = @VorlNr AND PersNr = @PersNr
);

Die Abfrage

SELECT * FROM GibVorlesungen(1001, 15);

könnte folgendes Ergebnis zurückgeben (siehe SQL - Sicht):

VorlNr Titel PersNr Name
1001 Datenbanken 15 Urlauber
Create User-defined Functions (Database Engine)]


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.