HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Tetszőleges adattábla egy sorának véletlenszerű kiválasztása


Példaprogram letöltése

4365 bájt

Sok esetben előfordul olyan feladat, amikor arra van szükségünk, hogy egy tetszőleges adattábla egy-egy sorát véletlenszerűen válasszuk ki. Mellékelt példában készítünk egy olyan tárolt eljárást, melynek semmilyen paramétert nem kell átadnunk és amely futtat egy select lekérdezést, mely véletlenszerűen kiválasztja egy megadott tábla valamely sorát.

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;

Cikksorozat

#IDKategóriaCikk címeSorozat
1488DelphiMS SQL tárolt eljárások1. rész
1499DelphiMS SQL tárolt eljárások2. rész
1507DelphiMS SQL tárolt eljárások3. rész
1519DelphiMS SQL tárolt eljárások4. rész
1526DelphiMS SQL tárolt eljárások5. rész
1537DelphiMS SQL tárolt eljárások6. rész
1546DelphiMS SQL tárolt eljárások7. rész
1553DelphiMS SQL tárolt eljárások8. rész
1564DelphiMS SQL tárolt eljárások9. rész
1573DelphiMS SQL tárolt eljárások10. rész
1582DelphiMS SQL tárolt eljárások11. rész
1591DelphiMS SQL tárolt eljárások12. rész
1600DelphiMS SQL tárolt eljárások13. rész
1609DelphiMS SQL tárolt eljárások14. rész
1617DelphiMS SQL tárolt eljárások15. rész
1626DelphiMS SQL tárolt eljárások16. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 534. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |