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

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.

433 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!