Zum Inhalt springen

User Defined Function

aus Wikipedia, der freien Enzyklopädie

Eine benutzerdefinierte Funktion ({{#invoke:Vorlage:lang|full|CODE=en|SCRIPTING=Latn|SERVICE=englisch}}, Abkürzung UDF) in einer Programmierumgebung bezeichnet eine Funktion, die der Anwender selbst erstellen und in seine Projekte einbinden kann. Sie erfüllt eine Aufgabe wie ein Makro, wird jedoch über einen Funktionsaufruf realisiert. Benutzerdefinierte Funktionen sind in allgemeinen Programmiersprachen wie Visual Objects, Skriptsprachen wie PHP, spezieller Makrosoftware wie AutoIt und in Datenbanksprachen wie SQL und Firebird verfügbar.

Die Syntax einer benutzerdefinierten Funktion muss der Syntax der zugrundeliegenden Programmiersprache entsprechen, wobei vordefinierte Standardfunktionen und andere benutzerdefinierte Funktionen in der Definition verwendet werden können. Eine benutzerdefinierte Funktion muss genau einen Rückgabewert liefern.

Im Gegensatz zu einer gespeicherten Prozedur kann eine benutzerdefinierte Funktion nicht 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.<syntaxhighlight lang="sql"> CREATE FUNCTION GibMinVorlesungsnummer(@PersNr INT) RETURNS INT AS RETURN AS (

   RETURN
   SELECT MIN(VorlNr)
   FROM Vorlesung
   WHERE PersNr = @PersNr

); </syntaxhighlight> Nachdem diese benutzerdefinierte Funktion in der Datenbank gespeichert ist, kann sie innerhalb einer SQL-Abfrage verwendet werden. Die Abfrage<syntaxhighlight lang="sql"> SELECT Professor.PersNr, Professor.Name, GibMinVorlesungsnummer(PersNr) AS MinVorlNr,

   (SELECT Titel
   FROM Vorlesung
   WHERE VorlNr = GibMinVorlesungsnummer(PersNr)
   ) AS Titel

FROM Professor; </syntaxhighlight>könnte folgende Tabelle als 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 wird genau eine unbenannte SQL-Tabelle als Rückgabewert geliefert. Sie kann innerhalb einer SQL-Anweisung überall dort stehen, wo auch eine SQL-Tabelle stehen kann. Auf SQL-Ebene wird ein Kontrolleintrag definiert, der auf ein externes Programm verweist. Das Datenbanksystem unterstützt in der Regel mehrere Programmiersprachen, in denen das Programm geschrieben werden kann.

Die folgende benutzerdefinierte Funktion in SQL hat zwei Parameter @VorlNr, @PersNr vom Datentyp Integer:<syntaxhighlight lang="sql"> 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

); </syntaxhighlight>Die Abfrage<syntaxhighlight lang="sql"> SELECT * FROM GibVorlesungen(1001, 15); </syntaxhighlight>könnte folgendes Ergebnis zurückgeben (siehe SQL - Sicht):

VorlNr Titel PersNr Name
1001 Datenbanken 15 Urlauber

Weblinks