HIK Elektronikus Felsőoktatási Tankönyv- és Szakkönyvtár
A Kempelen Farkas Felsőoktatási Digitális Tankönyvtár/vagy más megjelenítő által közvetített digitális tartalmat a felhasználó a szerzői jogról szóló 1999. évi LXXVI. tv. 33. paragrafus (4) bekezdésében meghatározott oktatási, illetve tudományos kutatási célra használhatja fel. A felhasználó a digitális tartalmat képernyőn megjelenítheti, letöltheti, arról elektronikus adathordozóra vagy papíralapon másolatot készíthet, adatrögzítő rendszerében tárolhatja. A Kempelen Farkas Felsőoktatási Digitális Tankönyvtár/vagy más megjelenítő weblapján található digitális tartalmak üzletszerû felhasználása tilos, valamint kizárt a digitális tartalom módosítása és átdolgozása, illetve az ilyen módon keletkezett származékos anyag további felhasználása.

18.6.12. KURZOROK használata

Felmerülhet a kérdés, hogy mi is az a kurzor, s mire lehet használni. Nos amikor végrehajtunk egy SELECT utasítást, akkor egyszerre kapunk meg minden sort. Ez nem mindig megfelelő, előfordulhat például, hogy egy adott sor visszakapott oszlopértékei alapján valamilyen műveletet szeretnénk végezni. Ehhez egy kurzort (sormutatót) kell használnunk, amellyel a z adatbázisból kinyert sorokat egyenként dolgozhatjuk fel. A kurzor segítségével végiglépkedhetünk az adott SELECT utasítás által visszaadott sorokon.

Kurzor használatakor a következő lépéseket kell követnünk:

  1. Változókat vezetünk be a SELECT utasítás által visszaadott oszlopértékek tárolására.

  2. Bevezetjük a kurzort, megadva a megfelelő SELECT utasítást.

  3. Megnyitjuk a kurzort.

  4. Kiolvassuk a sorokat a kurzorból.

  5. Bezárjuk a kurzort.

Egy példaprogramon keresztül bemutatjuk a kurzorok használatát, mely megmutatja, hogy hogyan jeleníthetjük meg a kurzor segítségével a Products tábla ProductID, ProductName és UnitPrice oszlopait:

Use Northwind

-- 1. lépés: a változók bevezetése

DECLARE @MyProductID int

DECLARE @MyProductName nvarchar(40)

DECLARE @MyUnitPrice money

-- 2. lépés: a kurzor bevezetése

DECLARE ProductCursor CURSOR FOR

SELECT ProductID, ProductName, UnitPrice

FROM Products

WHERE ProductID <= 10

-- 3. lépés: a kurzor megnyitása

OPEN ProductCursor

-- 4. lépés: a sorok kiolvasása a kurzorból

FETCH NEXT FROM ProductCursor

INTO @MyProduct, @MyProductName, @MyUnitPrice

PRINT ’@MyProductID = ’ + CONVERT(nvarchar, @MyProductID)

PRINT ’@MyProductName = ’ + CONVERT(nvarchar, @MyProductName)

PRINT ’@MyUnitPrice = ’ + CONVERT(nvarchar, @MyUnitPrice)

WHILE @@FETCH_STATUS = 0

BEGIN

FETCH NEXT FROM ProductCursor

INTO @MyProductID, @MyProductName, @MyUnitPrice

PRINT ’@MyProductID = ’ + CONVERT(nvarchar, @MyProductID)

PRINT ’@MyProductName = ’ + CONVERT(nvarchar, @MyProductName)

PRINT ’@MyUnitPrice = ’ + CONVERT(nvarchar, @MyUnitPrice)

END

-- 5. lépés: a kurzor bezárása

CLOSE ProductCursor

DEALLOCATE ProductCursor