Eine UDF wird mit der SQL-Anweisung CREATE FUNCTION erzeugt, siehe "CREATE FUNCTION - User Defined Function (UDF) erzeugen". Eine UDF kann auch im Rahmen der SQL-Anweisung CREATE SCHEMA erzeugt werden, siehe "CREATE SCHEMA - Schema erzeugen".
UDFs können mit Eingabeparametern definiert werden.
par_
) von Spaltennamen unterscheiden.Beim Erzeugen der UDF muss der aktuelle Berechtigungsschlüssel das EXECUTE-Privileg für die in der UDF direkt aufgerufenen Routinen besitzen. Zusätzlich muss er für alle Tabellen und Spalten, die in der UDF angesprochen werden, diejenigen (SELECT-)Privilegien besitzen, die benötigt werden, um die in der Routine enthaltenen DML-Anweisungen ausführen zu können.
Der Text der UDF ist in SESAM/SQL vollständig in der Programmiersprache SQL geschrieben. Folgende SQL-Anweisungen zur Datensuche sind in UDFs zulässig, siehe Abschnitt „CREATE FUNCTION - User Defined Function (UDF) erzeugen":
SQL-Anweisung ohne Cursor | Funktion in der UDF | siehe |
SELECT | Liest einen einzelnen Satz | |
SQL-Anweisung mit Cursor | ||
OPEN | Öffnet einen lokalen Cursor | |
FETCH | Positioniert einen lokalen Cursor und liest ggf. den aktuellen Satz | |
CLOSE | Schließt einen lokalen Cursor |
Tabelle 26: SQL-Anweisungen zur Datenmanipulation in UDFs
SQL-Anweisungen zum Ändern von Daten (INSERT, UPDATE, DELETE, MERGE) sind in den UDFs von SESAM/SQL nicht zulässig.
Neben obigen SQL-Anweisungen kann eine Prozedur auch Kontrollanweisungen (siehe Abschnitt „Kontrollanweisungen in Routinen") und Diagnoseanweisungen(siehee Abschnitt „Diagnoseinformationen in Routinen") enthalten.
Eine UDF darf keine dynamisch formulierten SQL-Anweisungen oder Cursorbeschreibungen enthalten, siehe Abschnitt „Dynamische SQL".
Der aktuelle Berechtigungsschlüssel erhält automatisch das EXECUTE-Privileg für die erzeugte UDF. Hat er für die betreffenden Privilegien sogar die Berechtigung, diese weitergeben zu dürfen, dann darf er auch das EXECUTE-Privileg an andere Berechtigungsschlüssel weitergegeben.
Eine SQL-Anweisung in einer UDF darf auf die Parameter der UDF und (wenn die Anweisung Teil einer COMPOUND-Anweisung ist) auf lokale Variablen, jedoch nicht auf Benutzervariablen zugreifen.
Kommentare
Beschreibende Kommentare (siehe "Kommentar") können beliebig in eine UDF eingefügt werden.