İleri Seviye SQL Server Sql Server

SQL Server’da Tablodaki NULL Alanların Güncelleme Kodunu Oluşturan Prosedür

SQL Server Eğitimleri Kanalına Abone Olun

Herkese merhaba,

Bu yazıda SQL Server’da tablodaki NULL alanların güncelleme kodunu oluşturan prosedür hakkında bilgi vereceğim.

Aslında bu şekilde bir şey yapılabilir mi diye ilk başta düşündüm. Sonrasında Google’da aradım fakat bir şey bulamadım. Ben de böyle bir kod yazmaya karar verdim ki bu şekilde bir kod örneği internette de mevcut değil. Kısacası ilk ben yazmış oldum ve şu anda tektir.

Elinizde diyelim ki 200 kolonlu bir tablo var. Bu kadar kolon tablonuzda olabilir de olmayabilir de. Ben olabileceğini göz önünde bulundurarak bu yazıyı yazıyorum.

Her bir null değer içeren kolon için güncelleme kodunu yazdığınızı düşünün. Kolay olmayacaktır. Belki de ne gereği var diyorsunuz?

Ben NULL alan olarak genel değerleri yazdım. Siz kendinize göre düzenleyebilirsinizde.

Prosedür kodları aşağıdadır.

--Prosedürü oluşturma

CREATE PROC NullAlanlarıGuncellemeProseduru
(@TabloAdi NVARCHAR(100))
AS
BEGIN
    SELECT t.name 'Data type',
           CASE
               WHEN t.name = 'int' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = 0 WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'varchar' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = ''''  WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'bit' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = 0 WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'datetime' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = GETDATE() WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'smallint' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = 0 WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'tinyint' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = 0 WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'nvarchar' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = ''''  WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'image' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = ''''  WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'ntext' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = ''''  WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'money' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = 0 WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'bigint' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = 0 WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'char' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = ''''  WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'date' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = GETDATE() WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'datetime2' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = GETDATE() WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'decimal' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = 0 WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'float' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = 0 WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'nchar' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = ''''  WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'real' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = 0 WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'binary' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = ''''  WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'varbinary' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = ''''  WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               WHEN t.name = 'smalldatetime' THEN
                   'UPDATE ' + @TabloAdi + ' SET ' + '[' + CAST(c.name AS VARCHAR(255)) + ']' + ' = GETDATE() WHERE '
                   + CAST(c.name AS VARCHAR(255)) + ' IS NULL'
               ELSE
                   ''
           END AS Sorgu
    FROM sys.columns c
        INNER JOIN sys.types t
            ON c.user_type_id = t.user_type_id
        LEFT OUTER JOIN sys.index_columns ic
            ON ic.object_id = c.object_id
               AND ic.column_id = c.column_id
        LEFT OUTER JOIN sys.indexes i
            ON ic.object_id = i.object_id
               AND ic.index_id = i.index_id
    WHERE c.object_id = OBJECT_ID(@TabloAdi)
          AND ISNULL(i.is_primary_key, 0) = 0;


END;

GO

--Prosedürün kullanımı

EXEC NullAlanlarıGuncellemeProseduru 'Products'; --Tablo adını yazacaksınız.

Prosedürü oluşturup çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız. Ben örneği Northwind veritabanı üzerinde yaptım. Siz kendi veritabanınız üzerinde deneyebilirsiniz.

SQL Server’da Tablodaki NULL Alanların Güncelleme Kodunu Oluşturan Prosedür

Görüldüğü üzere her bir kolon için NULL olan satırı güncelleyen Update satırı oluşturulmuş oldu. Kodu yazarken Primary Key kolonunu dahil etmedim. Bilgilerinize.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

2 Kez Okundu
SQL Server Eğitimleri Kanalına Abone Olun

Yazar hakkında

Yavuz Selim Kart

SQL Server tarafında kendini ilerletmeye çalışırken bildiklerini sürekli başkalarına aktaran, yazılım dünyasında (C#, Java, Python vb.) kendini güncel tutmaya çalışan, araştırma yapmaktan bıkmayan, meraklı, bilginin üzerine bilgi katmaktan mutluluk duyan bir yazılım eğitmeni ve kod sever.
Grafik tasarım dünyasında Indesign'ı anlatacak kadar iyi kullanabilen, Photoshop ve Illustrator'e de orta düzey hakimiyeti bulunan, internet üzerinde online kimya dergisi kurmuş ve bunu yüzbinlerce kişiye ulaştırmayı başaran bir grafik sever.
WordPress tarafında 5 adet web sitesi kurmuş, bu sistemler üzerine çalışan bir WordPress sever.
Sosyal medya üzerinde okumalara ve araştırmalara devam eden, kendi kurmuş olduğu kimya dergisini daha çok kişiye nasıl ulaştırırım diye düşünen ve bu konuda SEO çalışmaları üzerine kafa yoran bir Sosyal Medya sever.
Kısaca çok çalışmayı seven, azimli biriyim.

Kopyalamak Yasaktır!