Выполните изменения для многих таблиц - PullRequest
0 голосов
/ 22 августа 2011

У меня много таблиц, имена которых начинаются с Lookup_.Как я могу изменить столбец Name в каждой такой таблице?

Ответы [ 2 ]

3 голосов
/ 22 августа 2011

Я не совсем уверен, что вы хотите сделать с Name, но именно так вы меняете его на nvarchar (20).

Declare @sql as nvarchar(500)
Declare TableCursor CURSOR FAST_FORWARD FOR
SELECT 'alter table ' + table_schema + '.'+ table_name +' alter column name nvarchar(20)' FROM INFORMATION_SCHEMA.TABLES
WHERE left(table_name, 7) = 'lookup_' and table_type = 'BASE TABLE'

OPEN TableCursor
FETCH NEXT FROM TableCursor
INTO @sql
WHILE @@FETCH_STATUS = 0
BEGIN
     EXEC (@sql)
     FETCH NEXT FROM TableCursor
     INTO @sql
END
CLOSE TableCursor
DEALLOCATE TableCursor
1 голос
/ 23 августа 2011

это выглядит намного лучше

exec sp_msforeachtable 
    @command1 = 'alter table ? alter column name nvarchar(20)'
    , @whereand = 'and left(o.name, 7) = ''lookup_'' and o.type = ''U'''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...