Funcție definită de utilizator

O funcție definită de utilizator ( funcție în limba engleză definită de utilizator , acronim UDF ) într-un mediu de programare se referă la o funcție care va crea și utilizatorul însuși se poate integra în proiectele sale. Îndeplinește o sarcină ca o macro , dar este implementată printr-un apel funcțional. Funcțiile definite de utilizator sunt disponibile în general , limbaje de programare , cum ar fi obiecte vizuale , limbaje de scripting cum ar fi PHP , macro speciale de software , cum ar fi AutoIt și în limbi de baze de date , cum ar fi SQL si Firebird .

Sintaxa unei funcții definite de utilizator trebuie să corespundă sintaxa de bază limbajul de programare și funcțiile standard predefinite și alte funcții definite de utilizator pot fi utilizate în definiție. O funcție definită de utilizator trebuie să furnizeze exact o valoare returnată.

Spre deosebire de o procedură stocată , o funcție definită de utilizator nu poate fi pornită ca program .

Exemple

Funcție scalară definită de utilizator în SQL

Următoarea funcție scalară definită de utilizator primește cheia externă @PersNr a persoanei de tipul de date Integer . Funcția returnează cel mai mic număr de curs pentru această persoană.

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

După ce această funcție definită de utilizator este stocată în baza de date , poate fi utilizată într-o interogare SQL . Interogarea

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

ar putea returna următorul tabel ca urmare:

PersNr Nume de familie MinVorl titlu
Al 12-lea Wirth 1000 Dezvoltare software 1
15 Tesla 1001 Baze de date
20 Vacanți 1200 Rețele 1

Funcția de tabel extern în SQL

În această variantă, se furnizează exact un tabel SQL fără nume ca valoare returnată. Poate fi oriunde în cadrul unei instrucțiuni SQL unde poate fi un tabel SQL. O intrare de control care se referă la un program extern este definită la nivel SQL. Sistemul de baze de date acceptă de obicei mai multe limbaje de programare în care programul poate fi scris.

Următoarea definit de utilizator funcția în SQL are doi parametri @VorlNr , @PersNr de tip de date 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
);

Interogarea

SELECT * FROM GibVorlesungen(1001, 15);

ar putea returna următorul rezultat (vezi vizualizarea SQL ):

Șablonul nr titlu PersNr Nume de familie
1001 Baze de date 15 Vacanți

Link-uri web

Create User-defined Functions (Database Engine)]