Skip Navigation Links
Anasayfa
Download
Üye Ol
Makaleler
KodBank
Biz Kimiz
İletişim
--Linklerimiz--
>Asp.Net Nedir?
>MSSQL Nedir?
>Sayfam
>Haberler
>Asp.net Code
>Editör Olabilirim
>Ziyaretçi Defteri
>Destekleyenler
--Makale Detayı--

Yazarı : Crescent-Star Kategorisi : MSSQL
Yazılış Tarihi : 19.07.2009 20:24:03 Okunma Sayısı : 215
Makale Başlığı : Cursor Yazımı Yorum Yaz

Merhabalar Arkadaşlar;

Uzun bir aradan sonra yine birlikteyiz. Bu sefer karsınıza cok zahmetli ama günlerce yapılacak bir işlemi cok kısa bir sürede yapan bir script ile karsınızdayım.

Bu script bir veritabanı tablolarında bulunan alanları teker teker geziyor ve sizin yamanızı istediğiniz işlemleri yapıyor.

 

use (Database_Name)

go

ALTER procedure call_degistir    
@yeni varchar(10),                           (  Bu kısım yazdıgımız cursor ifadesini procedure cevirmek istiyorsak
@eski varchar(10)                                                         kullanılır )
AS

 

        Cursor Başlangıcı  

declare @alan nvarchar(50)                                              Kullanılacak değişkenler tanımlanıyor
declare @table nvarchar(100)
declare @sqlcumle nvarchar(max)


declare curdeneme cursor for                                                                                           Cursor tanımı yapılıyor ve nasıl
select table_name , column_name from INFORMATION_SCHEMA.COLUMNS    nerede calısacagı belirleniyor
where column_name like '%adi%'

open curdeneme                                                                                                                  Tanımlanan cursor acılıyor

fetch next from curdeneme into @table, @column                             Cursor a bir dahaki alana git tablo ,alan         
                                                                              
                                                                isimerini al komutu veriliyor
set @yeni = '''' + @yeni + ''''                                                                              string bir ifade ile calısıyorsak bu kısımın
set @eski = '''' + @eski + ''''                                                                                           yazılması gerekiyor

while @@FETCH_STATUS =0                                                         yukarıdaki işlemler dogru ise işlem baslıyor
begin
    set @sqlcumle = 'update '+ @table + ' set ' + @deneme + '=' +@yeni+  ' where ' + @deneme + '='+ @eski
    exec sp_executesql @sqlcumle
    fetch next from curdeneme into @table, @deneme   
end

----------yukarıdaki cümlede yapmak istedikleriniz yazılacak @yeni ve @eski yerine sizinkoyacagınız cümleler yazılmalı cünkü bu ifadeler procedur için calısmaktadır----------------------------------------
CLOSE curdeneme                                           yapılan işlemler tamamlandıysa cursor kapanıyor

DEALLOCATE curdeneme                                            bu iki komut cursor ün basa dönmesini saglıyor
RETURN

---------------------------------Sadece cursor olarak yazılacaksa buraya kadar yazılmalı ve F5 tusuna basılmalı---------


GO

EXEC call_degistir @eski='bilgi yazılacak',@yeni='bilgi yazılacak'             eger procedure olarak yazılmıssa bu

                                                                                                                                              komut calıstırır

 

Table_Name: bu komut üzerinde calısılan tablo adını hafızaya alır MSSQL de özel bir koddur

Column_Name: bu komut üzerinde calısılan alan adını hafızaya alır MSSQL de özel bir koddur

INFORMATION_SCHEMA.COLUMNS: Database de bulunan tüm bilgileri alanları tabloları ifade eder MSSQL de özel bir koddur

 

Şimdi bu yazdıgımız kod veritabanında her alanda dolasarak adi ismindeki alanları bulacak ve sizin istediğiniz değişikligi yapacaktır.

table_name ve column_name bilindigi üzere update cümlesi içindir cünkü tablo ve alan adı alınmadan update cümlesi yazılmaz. Bu kod ileri düzey MSSQL developerlar tarafından kullanılmaktadır calısan herkes yapabilir bence

Herkese İyi Calısmalar..........                              

Yorum Yaz

 
--Makaleye Yazılan Yorumlar--


[ Anasayfa | Download | Üye Ol | Makaleler | Ziyaretci Defteri | Haberler | KodBank | Biz Kimiz? | İletişim ]
Copyright © heryonuyleasp.net 2008-2010-info@heryonuyleasp.net
Web Stats