<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=User_Defined_Function</id>
	<title>User Defined Function - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=User_Defined_Function"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=User_Defined_Function&amp;action=history"/>
	<updated>2026-05-18T17:22:19Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=User_Defined_Function&amp;diff=556669&amp;oldid=prev</id>
		<title>imported&gt;Siegbert v2: Weblink repariert</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=User_Defined_Function&amp;diff=556669&amp;oldid=prev"/>
		<updated>2023-12-28T06:35:21Z</updated>

		<summary type="html">&lt;p&gt;Weblink repariert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Eine &amp;#039;&amp;#039;&amp;#039;benutzerdefinierte Funktion&amp;#039;&amp;#039;&amp;#039; ({{enS|&amp;#039;&amp;#039;&amp;#039;user-defined function&amp;#039;&amp;#039;&amp;#039;}}, Abkürzung &amp;#039;&amp;#039;&amp;#039;UDF&amp;#039;&amp;#039;&amp;#039;) in einer Programmierumgebung bezeichnet eine [[Funktion (Programmierung)|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 [[Programmiersprache]]n wie [[Visual Objects]], [[Skriptsprache]]n wie [[PHP]], spezieller Makrosoftware wie [[AutoIt]] und in [[Datenbank]]sprachen wie [[SQL]] und [[Firebird (Datenbank)|Firebird]] verfügbar.&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu einer [[Gespeicherte Prozedur|gespeicherten Prozedur]] kann eine benutzerdefinierte Funktion nicht als [[Computerprogramm|Programm]] gestartet werden.&lt;br /&gt;
&lt;br /&gt;
== Beispiele  ==&lt;br /&gt;
=== Skalare benutzerdefinierte Funktion in SQL ===&lt;br /&gt;
Der folgenden skalaren benutzerdefinierten Funktion wird der [[Fremdschlüssel]] &amp;#039;&amp;#039;@PersNr&amp;#039;&amp;#039; der Person vom [[Datentyp]] [[Integer (Datentyp)|Integer]] übergeben. Die Funktion gibt die kleinste Vorlesungsnummer für diese Person zurück.&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE FUNCTION GibMinVorlesungsnummer(@PersNr INT)&lt;br /&gt;
RETURNS INT&lt;br /&gt;
AS&lt;br /&gt;
RETURN&lt;br /&gt;
AS&lt;br /&gt;
(&lt;br /&gt;
    RETURN&lt;br /&gt;
    SELECT MIN(VorlNr)&lt;br /&gt;
    FROM Vorlesung&lt;br /&gt;
    WHERE PersNr = @PersNr&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nachdem diese benutzerdefinierte Funktion in der [[Datenbank]] gespeichert ist, kann sie innerhalb einer [[SQL]]-Abfrage verwendet werden. Die Abfrage&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT Professor.PersNr, Professor.Name, GibMinVorlesungsnummer(PersNr) AS MinVorlNr,&lt;br /&gt;
    (SELECT Titel&lt;br /&gt;
    FROM Vorlesung&lt;br /&gt;
    WHERE VorlNr = GibMinVorlesungsnummer(PersNr)&lt;br /&gt;
    ) AS Titel&lt;br /&gt;
FROM Professor;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;könnte folgende [[Datenbanktabelle|Tabelle]] als Ergebnis zurückgeben:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!PersNr&lt;br /&gt;
!Name&lt;br /&gt;
!MinVorlNr&lt;br /&gt;
!Titel&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|Wirth&lt;br /&gt;
|1000&lt;br /&gt;
|Softwareentwicklung 1&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|Tesla&lt;br /&gt;
|1001&lt;br /&gt;
|Datenbanken&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|Urlauber&lt;br /&gt;
|1200&lt;br /&gt;
|Netzwerke 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== External Table Function („externe Tabellenfunktion“) in SQL ===&lt;br /&gt;
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 [[Programmiersprache|Programmiersprachen]], in denen das [[Computerprogramm|Programm]] geschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
Die folgende benutzerdefinierte Funktion in [[SQL]] hat zwei [[Parameter (Informatik)|Parameter]] &amp;#039;&amp;#039;@VorlNr&amp;#039;&amp;#039;, &amp;#039;&amp;#039;@PersNr&amp;#039;&amp;#039; vom [[Datentyp]] [[Integer (Datentyp)|Integer]]:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE FUNCTION GibVorlesungen(@VorlNr INT, @PersNr INT)&lt;br /&gt;
RETURNS TABLE&lt;br /&gt;
AS&lt;br /&gt;
RETURN&lt;br /&gt;
AS&lt;br /&gt;
(&lt;br /&gt;
    SELECT Vorlesung.VorlNr, Vorlesung.Titel, Professor.PersNr, Professor.Name&lt;br /&gt;
    FROM Professor INNER JOIN Vorlesung&lt;br /&gt;
    ON Professor.PersNr = Vorlesung.PersNr&lt;br /&gt;
    WHERE VorlNr = @VorlNr AND PersNr = @PersNr&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Die Abfrage&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM GibVorlesungen(1001, 15);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;könnte folgendes Ergebnis zurückgeben (siehe [[SQL#Sicht|SQL - Sicht]]):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!VorlNr&lt;br /&gt;
!Titel&lt;br /&gt;
!PersNr&lt;br /&gt;
!Name&lt;br /&gt;
|-&lt;br /&gt;
|1001&lt;br /&gt;
|Datenbanken&lt;br /&gt;
|15&lt;br /&gt;
|Urlauber&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* Microsoft Docs: [https://learn.microsoft.com/en-us/sql/relational-databases/user-defined-functions/create-user-defined-functions-database-engine Create User-defined Functions (Database Engine)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Siegbert v2</name></author>
	</entry>
</feed>