Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 использование выбранных SELECT данных для ALTER TABLE  [new]
igas
Member

Откуда: Minsk
Сообщений: 175
есть выборка данных
к примеру такая:
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = N'NTEXT' 
AND TABLE_NAME IN (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = N'BASE TABLE');
как сделать чтобы по этой выборке выполнить
ALTER TABLE tableName  ALTER COLUMN columnName NVARCHAR(MAX);
заранее благодарен
18 май 11, 19:42    [10674103]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Написать курсор. К примеру.
18 май 11, 19:43    [10674109]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
iljy
Member

Откуда:
Сообщений: 8711
igas,

1. написать курсор и выполнить каждый ALTER отдельно.
2. Собрать полный скрипт с помощью for xml, после чего выполнить все сразу.

У обоих методов есть достоинтва и недостатки.
18 май 11, 19:50    [10674135]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
igas
Member

Откуда: Minsk
Сообщений: 175
Гавриленко Сергей Алексеевич,
я не очень силён в SQL. Можно на примере показать?
18 май 11, 19:51    [10674140]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
igas, можно динамикой.

* А ниче, что все NOT NULL пойдут лесом?
18 май 11, 19:51    [10674142]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
mike909
Member

Откуда:
Сообщений: 662
igas
Гавриленко Сергей Алексеевич,
я не очень силён в SQL. Можно на примере показать?


В качестве примера
18 май 11, 20:01    [10674176]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
igas
Member

Откуда: Minsk
Сообщений: 175
mike909,написал так:
DECLARE convert_type insensitive cursor
for 
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = N'NTEXT' 
AND TABLE_NAME IN (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = N'BASE TABLE');

DECLARE @tableName varchar(256), @columnName varchar(256), @sql varchar(256);

OPEN convert_type 
FETCH NEXT FROM convert_type into @tableName, @columnName
WHILE @@FETCH_STATUS=0
BEGIN    
    set @sql='alter table '+ @tableName + ' alter column ' + @columnName + 'NVARCHAR(MAX)'
    exec (@sql)    
    FETCH NEXT FROM convert_type INTO @tableName, @columnName
END
CLOSE convert_type
DEALLOCATE convert_type
18 май 11, 20:48    [10674319]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
igas
Member

Откуда: Minsk
Сообщений: 175
не работает(
18 май 11, 20:51    [10674331]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
igas
Member

Откуда: Minsk
Сообщений: 175
Incorrect syntax near '('.
18 май 11, 20:52    [10674332]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
Glory
Member

Откуда:
Сообщений: 104751
igas
Incorrect syntax near '('.

наверное нужно между именем столбца и типов пробел ставить
Неужели так трудно перед выполнением вывести на экран текст сформированной команды ?
18 май 11, 20:54    [10674345]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
igas
Member

Откуда: Minsk
Сообщений: 175
Glory,
спасибо
18 май 11, 21:00    [10674370]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
igas
Member

Откуда: Minsk
Сообщений: 175
kDnZP,
можно подробней про NOT NULL?
19 май 11, 10:45    [10676207]     Ответить | Цитировать Сообщить модератору
 Re: использование выбранных SELECT данных для ALTER TABLE  [new]
igas
Member

Откуда: Minsk
Сообщений: 175
всем спасибо за помощь
19 май 11, 18:47    [10680550]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить