Cursor (İmleç)

Transkript

Cursor (İmleç)
Cursor (İmleç)
Cursor, select ile elde edilen kayıtlar üzerinde ileri-geri hareket ederek istenilen kaydın okunmasını
sağlar. Cursor sayesinde Select sorgusu ile elde edilen sonuç seti üzerinde istenilen kayda
ulaşılabilir.
(CURSOR) İMLEÇ KULLANIMI
DECLARE <Cursor Adı> [SCROLL] CURSOR
FOR <Select ifadesi>
OPEN <Cursor Adı>
--CLOSE <Cursor Adı>
DEALLACOTE < Cursor Adı>
 Cursor’ daki bilgileri alma
1. FETCH [NEXT] <cursor adı>
2. FETCH [NEXT] <cursor adı> INTO değişken
--sonucu direkt değişkene aktarır
DECLARE @ad CHAR(20), @soyad CHAR(20)
FETCH NEXT FROM imlecim INTO @ad, @soyad
PRINT @ad
PRINT @soyad
[SCROLL] yerine
Forward Only Scroll: Bir sonraki kaydı okur (Default)
İlk kayıttan başlayıp bir sonraki kaydı okur
FETCH NEXT FROM <imleç adı>
FETCH
FROM <imleç adı>
FETCH
<imleç adı>
DEALLACOTE
< imleç adı> hafızayı boşaltır
SCROLL
: İstenilen Kaydı okur
SCROLL seçili ise aşağıdaki gibi istenilen kayıt okunabilir





FETCH NEXT : İmleç bir sonraki kayda geçer.
FETCH PRIOR : İmleç bir önceki kayda geçer.
FETCH FIRST : İmlecin ilk kayda geçiş yapmasını sağlar.
FETCH LAST : İmlecin son kayda geçiş yapmasını sağlar.
FETCH ABSOLUTE n : İmlecin belirtilen sıradaki kayda
geçiş yapmasını sağlar.
 FETCH RELATIVE n : İmlecin bulunan kayıttan belirtilen
sıra ötesindeki kayda geçiş yapmasını sağlar. (-) ise önceki
kayda gider
@@FETCH_STATUS' un alabildiği değerler ve bu değerlerin gezinti işlemi için anlamları aşağıdaki
şekildedir.
0 FETCH komutu başarılı bir şekilde diğer bir kayda geçiş yapabilmiştir.
-1 FETCH komutu, diğer bir kayda geçiş yapamamıştır.(Kayıt kümesi başı veya sonu olması olasıdır.)
-2 FETCH komutu kaybolmuş bir kayda geçiş yapmıştır.
Örnek-1. Bir kaydı alır ve yazar
DECLARE @tck CHAR(11),@adsoy CHAR(20)
DECLARE ornek_cur CURSOR DYNAMIC FOR
SELECT tck,adsoy FROM uye
OPEN ornek_cur
FETCH FIRST FROM ornek_cur
FETCH LAST FROM ornek_cur
FETCH NEXT FROM ornek_cur INTO @tck, @adsoy
PRINT @tck
PRINT @adsoy
CLOSE ornek_cur
DEALLOCATE ornek_cur
Örnek-2. Kayıtları tek tek alır ve yazar
DECLARE @tck CHAR(11),@adsoy CHAR(20)
DECLARE
ornek_cur CURSOR DYNAMIC FOR
SELECT tck,adsoy FROM uye
OPEN ornek_cur
FETCH FIRST FROM ornek_cur INTO @tck,@adsoy
WHILE @@FETCH_STATUS<>-1 --son kayıda kadar
BEGIN
-- cursordan aldýðýn bilgileri tck,
--ve adsoy değişkenlerine koy
PRINT @tck
PRINT @adsoy
FETCH NEXT FROM ornek_cur INTO @tck,@adsoy
END
CLOSE ornek_cur
DEALLOCATE ornek_cur
Örnek-3: DENEME tablosundaki tüm kayıtların
maliyet değerini*5/6 ile tekrara düzenler (update)
DECLARE
ornek_cur CURSOR DYNAMIC FOR
SELECT MALIYET FROM DENEME
OPEN ornek_cur
WHILE @@FETCH_STATUS<>-1 --son kayda kadar
BEGIN
--sonuç setindeki MALIYET değerini aldı
FETCH
NEXT
FROM ornek_cur
UPDATE DENEME SET MALIYET=(MALIYET*5)/6
WHERE CURRENT OF ornek_cur
FETCH NEXT FROM ornek_cur
END
CLOSE ornek_cur -- cursor kapatılır
DEALLOCATE ornek_cur -- cursor bellekten
aıtılır

Benzer belgeler

T-Sql de Cursor Kullanımı

T-Sql de Cursor Kullanımı OPEN mekan_cursor FETCH LAST FROM mekan_cursor (son kaydı döndürür) (132        Mekan8) FETCH PRIOR FROM mekan_cursor (aktif satırdan bir önceki kaydı döndürür) (131         Mekan7) FETCH ABSOLUTE ...

Detaylı

Cursor VTYS`deki cursor`ler, metin editörlerindeki cursorler ile aynı

Cursor VTYS`deki cursor`ler, metin editörlerindeki cursorler ile aynı -2 : Resultset'teki tüm kayıtlar bittiği için en sona gelindi, daha fazla kayıt yer almıyor. (end of resultset)

Detaylı

Hafta_7_1

Hafta_7_1 -2 : Resultset'teki tüm kayıtlar bittiği için en sona gelindi, daha fazla kayıt yer almıyor. (end of resultset) Şimdi artık, kitaplar listesini sonuna kadar yazdırabiliriz. Bu iş için WHILE yapısın...

Detaylı