-- Önceki cursor'ları kapat ve deallocate et (eğer varsa) UPDATE CARIHAREKETLER SET ENLEM = 0,BOYLAM=0 -- Veya uygun bir değer WHERE ENLEM IS NULL OR BOYLAM IS NULL; UPDATE CARIHAREKETLER2 SET ENLEM = 0,BOYLAM=0 -- Veya uygun bir değer WHERE ENLEM IS NULL OR BOYLAM IS NULL; UPDATE FATURAMASTER SET ENLEM = 0,BOYLAM=0 -- Veya uygun bir değer WHERE ENLEM IS NULL OR BOYLAM IS NULL; UPDATE FATURAMASTER2 SET ENLEM = 0,BOYLAM=0 -- Veya uygun bir değer WHERE ENLEM IS NULL OR BOYLAM IS NULL; UPDATE IRSALIYEMASTER SET ENLEM = 0,BOYLAM=0 -- Veya uygun bir değer WHERE ENLEM IS NULL OR BOYLAM IS NULL; UPDATE IRSALIYEMASTER2 SET ENLEM = 0,BOYLAM=0 -- Veya uygun bir değer WHERE ENLEM IS NULL OR BOYLAM IS NULL; UPDATE MUSTERI SET ENLEM = 0,BOYLAM=0 -- Veya uygun bir değer WHERE ENLEM IS NULL OR BOYLAM IS NULL; UPDATE ROTA SET ENLEM = 0,BOYLAM=0 -- Veya uygun bir değer WHERE ENLEM IS NULL OR BOYLAM IS NULL; IF CURSOR_STATUS('global', 'TableCursor') > -1 BEGIN CLOSE TableCursor DEALLOCATE TableCursor END DECLARE @TableName NVARCHAR(255) DECLARE @ConstraintName NVARCHAR(255) DECLARE @sql NVARCHAR(MAX) DECLARE TableCursor CURSOR LOCAL FOR -- LOCAL cursor kullanımı SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'ENLEM' INTERSECT SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'BOYLAM' OPEN TableCursor FETCH NEXT FROM TableCursor INTO @TableName WHILE @@FETCH_STATUS = 0 BEGIN -- ENLEM Kolonu için işlemler IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName AND COLUMN_NAME = 'ENLEM' AND DATA_TYPE <> 'float') BEGIN -- Tüm kısıtlamaları bul ve kaldır (Varsayılan, FK, Check vb.) DECLARE ConstraintCursor_ENLEM CURSOR LOCAL FOR -- LOCAL cursor kullanımı SELECT name FROM sys.check_constraints WHERE parent_object_id = OBJECT_ID(@TableName) AND parent_column_id = (SELECT column_id FROM sys.columns WHERE object_id = OBJECT_ID(@TableName) AND name = 'ENLEM') UNION ALL SELECT name FROM sys.default_constraints WHERE parent_object_id = OBJECT_ID(@TableName) AND parent_column_id = (SELECT column_id FROM sys.columns WHERE object_id = OBJECT_ID(@TableName) AND name = 'ENLEM') UNION ALL SELECT name -- Foreign Key kısıtlamaları için daha uyumlu bir yol FROM sys.foreign_key_columns fkc INNER JOIN sys.columns c ON fkc.parent_object_id = c.object_id AND fkc.parent_column_id = c.column_id WHERE fkc.parent_object_id = OBJECT_ID(@TableName) AND c.name = 'ENLEM' OPEN ConstraintCursor_ENLEM FETCH NEXT FROM ConstraintCursor_ENLEM INTO @ConstraintName WHILE @@FETCH_STATUS = 0 BEGIN SET @sql = N'ALTER TABLE ' + @TableName + ' DROP CONSTRAINT ' + @ConstraintName EXEC sp_executesql @sql FETCH NEXT FROM ConstraintCursor_ENLEM INTO @ConstraintName END CLOSE ConstraintCursor_ENLEM DEALLOCATE ConstraintCursor_ENLEM SET @sql = N'ALTER TABLE ' + @TableName + ' ALTER COLUMN ENLEM FLOAT NOT NULL' EXEC sp_executesql @sql SET @sql = N'ALTER TABLE ' + @TableName + ' ADD CONSTRAINT DF_' + @TableName + '_ENLEM DEFAULT 0 FOR ENLEM' EXEC sp_executesql @sql END -- BOYLAM Kolonu için işlemler (Aynı işlemler BOYLAM için de tekrarlandı) IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName AND COLUMN_NAME = 'BOYLAM' AND DATA_TYPE <> 'float') BEGIN -- Tüm kısıtlamaları bul ve kaldır (Varsayılan, FK, Check vb.) DECLARE ConstraintCursor_BOYLAM CURSOR LOCAL FOR -- LOCAL cursor kullanımı SELECT name FROM sys.check_constraints WHERE parent_object_id = OBJECT_ID(@TableName) AND parent_column_id = (SELECT column_id FROM sys.columns WHERE object_id = OBJECT_ID(@TableName) AND name = 'BOYLAM') UNION ALL SELECT name FROM sys.default_constraints WHERE parent_object_id = OBJECT_ID(@TableName) AND parent_column_id = (SELECT column_id FROM sys.columns WHERE object_id = OBJECT_ID(@TableName) AND name = 'BOYLAM') UNION ALL SELECT name -- Foreign Key kısıtlamaları için daha uyumlu bir yol FROM sys.foreign_key_columns fkc INNER JOIN sys.columns c ON fkc.parent_object_id = c.object_id AND fkc.parent_column_id = c.column_id WHERE fkc.parent_object_id = OBJECT_ID(@TableName) AND c.name = 'BOYLAM' OPEN ConstraintCursor_BOYLAM FETCH NEXT FROM ConstraintCursor_BOYLAM INTO @ConstraintName WHILE @@FETCH_STATUS = 0 BEGIN SET @sql = N'ALTER TABLE ' + @TableName + ' DROP CONSTRAINT ' + @ConstraintName EXEC sp_executesql @sql FETCH NEXT FROM ConstraintCursor_BOYLAM INTO @ConstraintName END CLOSE ConstraintCursor_BOYLAM DEALLOCATE ConstraintCursor_BOYLAM SET @sql = N'ALTER TABLE ' + @TableName + ' ALTER COLUMN BOYLAM FLOAT NOT NULL' EXEC sp_executesql @sql SET @sql = N'ALTER TABLE ' + @TableName + ' ADD CONSTRAINT DF_' + @TableName + '_BOYLAM DEFAULT 0 FOR BOYLAM' EXEC sp_executesql @sql END FETCH NEXT FROM TableCursor INTO @TableName END CLOSE TableCursor DEALLOCATE TableCursor