Измените точность всех десятичных столбцов в каждой таблице в базе данных

У меня есть довольно большая база данных, которая имеет много десятичных столбцов в большом количестве таблиц, клиент теперь передумал и хочет, чтобы все числа (десятичные числа) имели точность 3 d.p. вместо исходных двух. Есть ли какой-либо быстрый способ пройти все таблицы в базе данных и изменить какой-либо десятичный столбец в той таблице, чтобы иметь 3.d.p вместо 2 d.p?

Дб находится на sql 2005.

Любая справка была бы большой.

5
задан Jon 31 March 2010 в 20:06
поделиться

2 ответа

Получите столбцы из 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
7
ответ дан 14 December 2019 в 04:34
поделиться

Если вы можете получить имена таблиц и столбцов, это не должно быть так уж плохо

ALTER TABLE MyTable ALTER COLUMN MyColumn DECIMAL(#,#)
1
ответ дан 14 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: