Tag-Archive for » cursor «

Transact-SQL(T-SQL) MsSQL

 

   İşim gereği çok fazla sayıda veritabanı ile haşır-neşir olmaktayım. Bunlardan birisi de MsSql veritabanı. En az 500 adet tablosu olan bir veritabanının tablolarının satır ve sütunlarının içerisinde çoğu kez kaybolduğum tartışmasız bir gerçek ne yazık ki. Hele bu tabloların bir kısmında veri yoksa, boşu boşuna orda durması size daha fazla zaman kaybettirir. Bu yüzden içerisinde kayıt olmayan tabloları silmek yada adını değiştirmek için T-SQL e işim düştü. Burada cursor ve loop’lardan, değişken tanımlayıp, dinamik sorgu çalıştırmaya ve sonuçları ekranda göstermeye kadar hazır, fırından yeni çıkmış kodlarımı yayınlıyorum…

DECLARE @TABLO_ADI VARCHAR(50)
DECLARE @SORGU NVARCHAR(100)
DECLARE @KAYIT_SAYISI int

DECLARE crstab1 CURSOR FOR
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

OPEN crstab1

WHILE @@FETCH_STATUS = 0
BEGIN
   set @KAYIT_SAYISI=0
   FETCH NEXT FROM crstab1 INTO @TABLO_ADI
   set @SORGU='SELECT @KAYIT_SAYISI=COUNT(*) FROM '+@TABLO_ADI
   execute sp_executesql @SORGU
   if @KAYIT_SAYISI=0
   BEGIN
      set @SORGU='sp_rename '''+@TABLO_ADI+''',''A_'+@TABLO_ADI+''''
      execute sp_executesql @SORGU
   END
END

CLOSE crstab1
DEALLOCATE crstab1

more…