
A példa futtatása előtt a mellékelt StoredProc.sql állományban lévő tárolt eljárást helyezze el a MS SQL Northwind példaadatbázisába.
Továbbá az ADOConnection1 komponens ConnectionString property értékét módosítsa úgy, hogy a Northwind adatbázis elérhető legyen.
A tárolt eljárás működéséhez olyan adattábla szükséges, mely tartalmaz egy olyan oszlopot melynek értéke automatikusan növekszik egyesével minden egyes sornál.
Így első feladat, hogy meghatározzuk az adott táblában, hogy mennyi ennek az oszlopnak a maximális értéke. Erre azért lesz szükségünk, hogy a véletlenszerű szám kiválasztásakor tudjunk adni egy maximum értéket.
Mellékelt példában a Products táblát használjuk, melynek a ProductID oszlopa lesz az automatikusan sorszámozott.
Ezt követően futtathatjuk a select-et, mely a ProductID-re fog szűrni.
Elképzelhető olyan eset, hogy a RAND függvény által adott véletlenszerű szám egy olyan sorra utal, mely nem létezik (például már törölve lett). Ezt az eshetőséget figyelembe véve, a select futása után ellenőriznünk kell, hogy az talált-e adatsort, és amennyiben nem, úgy újra futtatnunk kell a select-et.
CREATE PROCEDURE GetRandomProduct
AS
DECLARE @max int
SELECT @max = max(ProductID) FROM Products
random:
SELECT *
FROM Products
WHERE ProductID = (SELECT CAST((RAND() * @max) AS int) + 1)
IF (@@rowcount = 0)
GOTO random
GO
A tárolt eljárást egy TADOStoredProc komponensen keresztül hívjuk meg a programunkban, mely minden egyes nyitáskor egy véletlenszerű sort fog szolgáltatni a Products táblából.
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOStoredProc1.Close;
ADOStoredProc1.Open;
end;