SQL prosedurlerde fetch kullanımı

şimdi düşünelim ki elimizde bir tablo var ve bu tablo satırları arasında gezip, satırlardaki istediğiniz bir alandaki verileri istediğiniz şekilde düzeltmek istiyorsunuz ve bu düzeltme işlemi tablo satırı çok fazla olduğundan dolayı elle düzeltmeniz günler alacak o zaman tam sizin işinizi çok çok kısa zamanda görecek olan prosedürü aşağıda paylaşıyorum…

(olaya balıklama daldım ama, sıkıntı yaşayan olursa yorum alanında paylaşırsa cevap yazabilirim.)
create procedure ‘prosedür_ismi’
as
declare @parametre_1 parametretipi_1 (örneğin parametremiz @id, parametretipi int)
declare @parametre_2 parametretipi_2 (örneğin parametremiz @ad, parametretipi varchar(30)) v.s.

DECLARE “cursor_ismi” cursor forSELECT * FROM tablo_ismi // veritabanından çektiğiniz, satırlarında dolaşacağınız tablodur.
OPEN “cursor_ismi”
FETCH “cursor_ismi” INTO parametre_1,parametre_2,…      // select sonucu dönen tablo satırlarını ilk satırdan başlayarak sıra ile parametrelere alır
WHILE (@@sqlstatus=0) BEGIN //ne zamana kadar döneceğini belirtiyoruz(örnekte satır sayısı kadar dönmesi için döngü koşulunu yazıyoruz.)if koşul SET @değişken= değeri
else if koşul SET @değişken= değeri
else if koşul SET @değişken= değeri
//yukarıda belirttiğim if koşullu belirteci isteğe bağlıdır.(örnek olması amacı ile  yazdım kullanıması zorunlu değildir, zamanında ben çok kasmıştım sırf bunun için… :) )

// artık belirtilen satırın içindeyiz ve select çektiğimiz satırdaki veriler parametreler vasıtası ile elimizdeler burada artık elimizdeki parametreleri ister bir tabloya insert, ister bir tablodan delete v.s. her şeyi yapabiliriz.

//örnek olması amacı ile insert sözcüğü yazıyorum
INSERT INTO “tablo_ismi”(/*tablo alanlarının hepsi arada “,” kullanılarak yazılmalı*/)
VALUES(/*yukarıda belirttiğimiz alanlara eklenecek parametreler alan sırasına göre yazılmalıdır.*/)
SET @değişken_1 = @@IDENTITY //ola ki yukarıda eklediğiniz satırın id’sine ulaşma ihtiyacı hasıl oldu onuda yandaki şekilde değişken_1 e alabiliyorsunuz.

FETCH “cursor_ismi” INTO //yukarıdaki fetch satırı ile aynı parametreleri burayada ekliyoruz.

END //satırların hepsi gezildi ve bitti
CLOSE “cursor_ismi” // cursor kapatıldı
DEALLOCATE CURSOR “cursor_ismi”

Not: “”(çift tırnak ) işaretli alanları tırnakları silerek siz doldurmalısınız…

kolay gelsin…

Written by 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Time limit is exhausted. Please reload CAPTCHA.