Bu Sayfayı Paylaş:

Kavram

Cursor

Tanım: İlişkisel veritabanı sistemlerinde , seçim sonucu alınan kayıtlar üzerinde gezinmeyi sağlayan yapı. Genel olarak cursor declare edilir, kullanıma başlarken açılır (open), her kayıt değişkenlere atanır (fetch) ve tüm kayıtlar gezildikten sonra kapatılır (close)

Veri

Cursor Temel Yapısı

İlişkili veritabanlarında cursor yapısı temel olarak benzemektedir. Temel yapı aşağıdaki gibi gösterilebilir : 
  1. Deklarasyon : Select sorgusu ile cursor declare edilir. DECLARE cursor_adı CURSOR FOR select_sorgusu
  2. Open : Declare edilen cursor Open ile açılır. OPEN cursor_adı
  3. Fetch : Seçilen kayıt değişkenlere atanır. FETCH cursor_adı INTO degisken1,degisken2,...
  4. Close : Tüm kayıtlar gezindikten sonra cursor kapatılır. CLOSE cursor_adı

 


Örnek

Transact-sql Cursor Örneği

Aşağıda SQL Server üzerinde T-SQL (Transact-sql) ile yapılan basit bir cursor örneği görülmektedir. Employees tablosunda FirstName ve LastName kayıtları alınmakta ve cursor açılarak tek tek ekrana ad soyad yazılmaktadır
 
declare @firstname varchar(100)
declare @lastname varchar(100)
 
declare cur cursor for SELECT FirstName,LastName from Employees
 
open cur
 
FETCH NEXT FROM cur into @lastname, @firstname
 
WHILE @@FETCH_STATUS = 0
BEGIN
 
PRINT @firstname+' '+@lastname
 
FETCH NEXT FROM cur into @lastname, @firstname
END
 
CLOSE cur
 
DEALLOCATE cur
 
 

Örnek

MySQL Cursor Örneği

Aşağıda MySQL'de yapılan basit bir cursor örneği görülmektedir. person tablosunda firstname ve lastname kayıtları alınmaktade ve cursor açılarak ad ve soyadlar , ile birleştirilip, ekranda gözümesi sağlanmatadır. 
 
-- sadece ekranda sonucu gormek icin
DECLARE _output TEXT DEFAULT '';
 
DECLARE v_firstname varchar(45);
DECLARE v_lastname varchar(45);
 
DECLARE finished BOOL DEFAULT FALSE;
 
DECLARE cur CURSOR FOR SELECT firstname,lastname FROM person;
 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = TRUE;
 
OPEN cur;
 
REPEAT FETCH cur INTO v_firstname,v_lastname;
 
IF NOT finished THEN
    SET _output = concat(_output,',',v_firstname," ",v_lastname); 
END IF;
 
UNTIL finished END REPEAT;
 
CLOSE cur;
 
select _output;
 
Not : MySQL'de cursor kodu , stored procedure, function gibi bölümlerin içine koyarak test edebilirsiniz




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir