Mysql'de Cursor Kullanımı

Mysql de Cursor Kullanımı,

Kayıtlara satır satır erişmek ve bu kayıtlar üzerinde işlem yapabilmemiz iÇin kullanılır.
Mysql de Cursorlar Stored Procedure,Trigger ve Fonksiyonlarla birlikte kullanılabilirler.
Cursor bir select ifadesi iÇin tanımlanır ve select işleminin sonucunda dönen her sutun iÇin
bir değişken tanımlanır. Ve döngü iÇine sokularak bu datalar üzerinde istediğimiz işlemi
yaparız. Update , insert , vs gibi.

şimdi Ürnek üzerinde anlamaya Çalışalım.

CREATE DEFINER=`root`@`localhost` PROCEDURE `td_albumSongsUpdate`()
BEGIN
 DECLARE id_ int;
 DECLARE done INT DEFAULT 0;
 DECLARE albumID_ varchar(30);
 DECLARE cur1 CURSOR FOR SELECT id,albumID FROM Albums;
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
 OPEN cur1;
 REPEAT
 FETCH cur1 INTO id_,albumID_;   Â
update td_albumSongs
 set as_albumID=albumID_
 where as_ID=id_ ;
 UNTIL
done
END REPEAT;
 close cur1;
 END$$

Root userının Call edebileceği `td_albumSongsUpdate` isimli bir procedure
yarattık. Ve procedurun iÇinde ;

id_ : int değişken tanımladık,
done : int bir değişken tanımladık default değer olarak 0 atadık.
AlbumID_: varchar(30) diye bir değişken tanımladık

Sonra cur1 isimli bir Cursor declare ettik ve SELECT id,albumID FROM Albums;
sql’inin sonucunda dönen değerleri bu cursor’a atadık. Ve en son olarak da
done değişkenine select işlemi sonucu dönen satırın en sonuna ulaştığında
(yani artık satır bulamadığında) done değişken değerini set edip, 1 yapmasını söyledik.

Sonra cur1 ,cursorını aÇtık.Ve Repeat-Until döngüsü iÇinde done değişken değerinin
1 oluncaya kadar devam etmesini söyledik.

Bu döngü iÇinde de albumSongs tablosuna update işlemi yaptırdık ve cur1 isimli cursor’ı kapattık.

Bir sonraki makaleler de görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator