Példaprogram, mely visszaadja a Products tábla azon sorait, amelyek UnitsInStock oszlopában a paraméterként átadott újrarendelési szintnél kisebb, vagy azzal egyenlő érték szerepel, és beszúr egy új oszlopot Reorder néven:
CREATE FUNCTION ProductsToBeOrdered2(@ReorderLevel int)
RETURNS @MyProducts table
(
ProductId int,
ProductName nvarchar(40),
UnitsInStock smallint,
Reorder nvarchar(3)
)
AS
BEGIN
-- sorok kinyerése a Products táblából és
-- beszúrásuk a MyProducts táblába
-- a Reorder oszlop ’NO’ –ra állítása
INSERT INTO @MyProducts
SELECT ProductID, ProductName, UnitsInStock, ’NO’
FROM Products;
-- a MyProducts tábla frissítése a Reorder oszlop
-- ’YES’ –re állításával, ha a UnitsInStock
-- kisebb, mint a @ReorderLevel, vagy azzal egyenlő
UPDATE @MyProducts
SET Reorder = ’YES’
WHERE UnitsInStock <= @ReorderLevel
RETURN
END
Ennek meghívásakor sem kell a tulajdonost feltüntetnünk:
SELECT * FROM ProductsToBeReordered2(20);
Az SQL Server lehetővé teszi, hogy az adatbázisokban eljárásokat tároljunk. A tárolt eljárások abban különböznek a felhasználói függvényektől, hogy jóval többféle adattípust adhatunk vissza.
Általában akkor készítünk tárolt eljárást, ha olyan feladatot kell elvégeznünk, ami erőteljesen igénybe veszi az adatbázist, vagy ha központosítani szeretnénk a kódokat, hogy az egyes felhasználóknak ne kelljen ugyanarra a feladatra saját programokat írniuk. Az intenzív adatbázis-használatára jó példa lehet egy banki alkalmazás, amelynek segítségével a számlákat frissítjük a nap végén, központosított kódra pedig akkor lehet szükség, ha a felhasználók hozzáférését az adatbázistáblákhoz korlátozni akarjuk.