У меня есть довольно большая база данных, которая имеет много десятичных столбцов в большом количестве таблиц, клиент теперь передумал и хочет, чтобы все числа (десятичные числа) имели точность 3 d.p. вместо исходных двух. Есть ли какой-либо быстрый способ пройти все таблицы в базе данных и изменить какой-либо десятичный столбец в той таблице, чтобы иметь 3.d.p вместо 2 d.p?
Дб находится на sql 2005.
Любая справка была бы большой.
Получите столбцы из information_schema в зависимости от типа и масштаба, затем измените их, чтобы получить желаемый масштаб.
declare @col sysname
declare @tbl sysname
declare @sql nvarchar(256)
declare crsFix cursor for
select table_name, Column_name from information_schema.columns
where data_type = 'decimal' and Numeric_Scale = 3
open crsFix
fetch next from crsFix into @tbl, @col
while(@@Fetch_Status = 0)
Begin
set @sql = 'Alter table [' + @tbl + '] alter column [' + @col + '] decimal(38,2) '
print @sql
exec sp_executesql @sql
fetch next from crsFix into @tbl, @col
End
close crsFix
deallocate crsFix
Если вы можете получить имена таблиц и столбцов, это не должно быть так уж плохо
ALTER TABLE MyTable ALTER COLUMN MyColumn DECIMAL(#,#)