T-Sql de Cursor Kullanımı
Transkript
T-Sql de Cursor Kullanımı
T-Sql de Cursor Kullanımı Onur Tekin tarafından yazıldı. Salı, 01 Aralık 2009 16:10 - Sql den veri çekme işlemlerinde, kayıtların arasında dolaşmak, her zaman ihtiyaç duyulmayan ancak bazı durumlarda hayati öneme sahip bir konudur. T-Sql de basit select işlemini kullanarak kayıtların içerisinde dolaşmak mümkün değildir. Mesela son kayıda gitmek yada 3. kayıdı döndürmek basit select işlemi ile mümkün değildir. Tabiki tüm kayıtları çektikten sonra kayıtları for ile dolaşıp istediğiniz verilere ulaşabilirsiniz ancak bu hem zaman hem de performans kaybına yol açar. T-Sql de Cursor, kayıtların arasında dolaşmak için kullanılır. Aşağıda verdiğim örnekte basit bir cursor ile nasıl kayıtlar arasında dolaşıldığını anlatacağım. Örnek database: 9 Mekan1 7 Mekan2 100 Mekan3 129 Mekan4 130 Mekan5 8 Mekan6 131 Mekan7 132 Mekan8 DECLARE mekan_cursor SCROLL CURSOR FOR SELECT * FROM Mekan ORDER BY mekanad 1/2 T-Sql de Cursor Kullanımı Onur Tekin tarafından yazıldı. Salı, 01 Aralık 2009 16:10 - 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 3 FROM mekan_cursor (ilk kayıt baz alınarak 3. kaydı döndürür) (100 Mekan3) FETCH RELATIVE 2 FROM mekan_cursor (aktif satır baz alınarak, aktif satırdan 2 sonraki kaydı döndürür) (130 Mekan5) FETCH RELATIVE -1 FROM mekan_cursor (aktif satır baz alınarak, 1 önceki kaydı döndürür.) (129 Mekan4) CLOSE mekan_cursor DEALLOCATE mekan_cursor GO 2/2
Benzer belgeler
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)
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...
Cursor (İmleç)
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),@ad...