declare @s1 varchar(1000), @s2 varchar(1000), @s3 varchar(1000), @s4 varchar(1000), @s5 varchar(1000), @s6 varchar(1000), @s7 varchar(1000), @s8 varchar(1000)
set numeric_roundabort OFF
set nocount ON
declare cur cursor for
select 'ALTER TABLE '+sysobjects.name+' ADD t'+syscolumns.name+' decimal (38,8) NULL ' s1,
'EXEC sp_bindefault ''[dbo].[Cero]'', '''+sysobjects.name+'.t'+syscolumns.name+''' ' s2,
'update '+sysobjects.name+' set t'+syscolumns.name+' = CONVERT (decimal(38,8 ), ROUND('+syscolumns.name+',8)) ' s3,
'update '+sysobjects.name+' set t'+syscolumns.name+' = 0 where t'+syscolumns.name+' is NULL' s4,
'ALTER TABLE '+sysobjects.name+' ALTER COLUMN t'+syscolumns.name+' decimal (38,8) NOT NULL ' s5,
' EXEC sp_unbindefault '''+sysobjects.name+'.'+syscolumns.name+''' ' s6,
'ALTER TABLE '+sysobjects.name+' drop COLUMN '+syscolumns.name+' ' s7,
'EXEC sp_rename '''+sysobjects.name+'.t'+syscolumns.name+''', '''+syscolumns.name+''', ''COLUMN''' s8
from syscolumns inner join sysobjects
on sysobjects.id=syscolumns.id and (sysobjects.xtype='u')
where syscolumns.xusertype = 62
open cur
fetch next from cur into @s1, @s2, @s3, @s4, @s5, @s6, @s7, @s8
while @@fetch_status = 0
begin
exec (@s1)
exec (@s2)
exec (@s3)
exec (@s4)
exec (@s5)
exec (@s6)
exec (@s7)
exec (@s8)
fetch next from cur into @s1, @s2, @s3, @s4, @s5, @s6, @s7, @s8
end
close cur
deallocate cur
set nocount OFF
set numeric_roundabort ON