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
- Documente Microsoft: [ https://docs.microsoft.com/en-us/sql/relational-databases/user-defined-functions/create-user-defined-functions-database-engine?view=sql-server-ver15
Create User-defined Functions (Database Engine)]