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ı
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 ...
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)