C# - Függvények definiálása

Transact SQL 16. rész

forráskód letöltése
Az adatok kezelését nagymértékben megkönnyíti, hogy az adatbázisban saját függvényeket is létrehozhatunk. Ennek módjáról szól a cikksorozat ezen része.
01.sql
Első lépésben most is egy teszt adatbázist hozunk létre.
02.sql
Létrehozunk egy olyan táblát, amely személyneveket és születési dátumokat tartalmaz, és fel is veszünk néhány rekordot. A feladat az lesz, hogy egy olyan függvényt készítsünk, amely paraméterként kap két dátumot. Az egyik a születési dátum, a másik pedig egy tetszőleges dátum. A függvény kiszámolja, hogy az adott időpontban született személy a megadott időpontban hány éves volt.
03.sql
Létrehozzuk a fenti funkciót megvalósító függvényt.
CREATE FUNCTION Age (@BirthDate DateTime, @CurrentDate DateTime)  
RETURNS int AS  
BEGIN
  DECLARE @A int;
  SET @A = Abs(DateDiff(Day, @CurrentDate, @BirthDate))/365;
  RETURN (@A)
END
A függvényt a CREATE FUNCTION utasítással hozhatjuk létre. Ezután áll a függvény neve, majd zárójelben a paraméterek. A függvényeknek háromféle visszatérési értéke lehet, melyet a RETURNS kulcsszó utáni típus határoz meg:
  • a visszatérési érték egy mező típus (pl. int, datetime, stb.);
  • TABLE: a visszatérési érték egy tábla, vagyis a függvény egy SELECT lekérdezés eredményét adja vissza.
  • a harmadik típus abban különbözik az előzőtől, hogy itt ténylegesen egy táblát ad vissza, és nem egy lekérdezés eredményét. A tábla mezőinek adatait a TABLE kulcsszó után zárójelben kell megadni, ugyanúgy, ahogy a CREATE TABLE utasításnál.
Ha a függvény több utasítást is tartalmaz, akkor azokat BEGIN-END közé is tehetjük. A visszatérési értékét a RETURN szó után kell megadnunk, kivéve a 3. függvénytípus esetében, bár a RETURN szót ott is meg kell adni.
04.sql
Ebben a fájlban egy SELECT lekérdezés található, amelyben felhasználjuk a fent deklarált Age függvényt.
SELECT
  BirthDate AS 'Szül. dátum',
  CreateFunctionTest.Dbo.Age(BirthDate, GetDate()) AS 'Életkor'
FROM Table1;
Mint látható, nem elég a függvény nevét megadni, hanem az adatbázis és a tulajdonos nevét is meg kell adni. A fenti lekérdezés „Életkor” mezőjében az adott személy életkora jelenik meg, mivel második paraméterként a rendszerdátumot adtuk meg (GetDate függvény).
05.sql
Töröljük a teszt adatbázist.

Transact SQL cikksorozat

Transact SQL Referencia - Transact SQL 1. rész
Transact SQL további belső változói - Transact SQL 2. rész
Dátumkezelés a Transact SQL-ben - Transact SQL 3. rész
Sztringkezelés a Transact SQL-ben - Transact SQL 4. rész
Folyamatvezérlés eszközei a Transact SQL-ben - Transact SQL 5. rész
Összesítő függvények - Transact SQL 6. rész
Adatbázisok létrehozása, törlése - Transact SQL 7. rész
Adatbázis módosítás lehetőségei - Transact SQL 8. rész
Táblák létrehozása - Transact SQL 9. rész
Táblák módosítása, törlése - Transact SQL 10. rész
Rendszer funkciók - Transact SQL 11. rész
Adatkonvertálási lehetőségek - Transact SQL 12. rész
Tárolt eljárás létrehozása - TransactSQL 13. rész
Triggerek kezelése - Transact SQL 14. rész
Indexek létrehozása - Transact SQL 15. rész

Függvények definiálása - Transact SQL 16. rész

Függvények felüldefiniálása és törlése - Transact SQL 17. rész
Szabályok létrehozása - Transact SQL 18. rész
Alapértelmezett értékek megadása - Transact SQL 19. rész
Nézet táblák létrehozása - Transact SQL 20. rész
Nézettáblák módosítása - Transact SQL 21. rész
Adatbázis és tranzakciós napló mentése - Transact SQL 22. rész
Elmentett adatbázis és tranzakciós napló visszaállítása - Transact SQL 23. rész
Full-Text Catalog létrehozása, használata - Transact SQL 24. rész
Full-Text Catalog további lehetőségei - Transact SQL 25. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 26. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 27. rész
SET parancsok - Transact SQL 28. rész