powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ALTER TABLE в цикле.
7 сообщений из 7, страница 1 из 1
ALTER TABLE в цикле.
    #32031792
Олег Яговкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Не подскажет ли кто нибудь как добавить доп. поле в n таблиц
базы.
Конструкция типа:

declare @name1 varchar(50)
declare @name2 varchar(50)
declare @code varchar (400)

DECLARE name_tables CURSOR FOR
select name from sysobjects
where xtype='U' and
name <> 'dtproperties' and
name not like 'sys%' and
name not like 'spr%'

OPEN name_tables
FETCH NEXT FROM name_tables INTO @name1

SET @name2=RTRIM(@name1)

WHILE @@FETCH_STATUS=0
BEGIN

EXEC @code='ALTER TABLE '+@name2+
' ADD ID int identity CONSTRAINT ID_pk PRIMARY KEY'

FETCH NEXT FROM name_tables INTO @name1
SET @name2=RTRIM(@name1)
END

CLOSE name_tables
DEALLOCATE name_tables

не работает, т.к. не хочет брать переменную @name2 в команде:
EXEC @code='ALTER TABLE '+@name2+
' ADD ID int identity CONSTRAINT ID_pk PRIMARY KEY'

Если явно определить имя табл. то работает. Но надо в цикле по всей базе. И работает ли ALTER TABLE c переменными вместо имени таблицы, что то нигде не нашел.
...
Рейтинг: 0 / 0
ALTER TABLE в цикле.
    #32031795
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поподробнее, пожалуйста, что значит не работает - код ошибки, текст ошибки
...
Рейтинг: 0 / 0
ALTER TABLE в цикле.
    #32031796
Олег Яговкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Server: Msg 170, Level 15, State 1, Line 24
Line 24: Incorrect syntax near 'ALTER TABLE '.
К сожалению самый подробный текст.
...
Рейтинг: 0 / 0
ALTER TABLE в цикле.
    #32031798
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EXEC @code='ALTER TABLE '+@name2+
' ADD ID int identity CONSTRAINT ID_pk PRIMARY KEY'


Интересный у вас однако формат вызова.

EXEC 'ALTER TABLE '+@name2+
' ADD ID int identity CONSTRAINT ID_pk PRIMARY KEY'

либо

set @code='ALTER TABLE '+@name2+
' ADD ID int identity CONSTRAINT ID_pk PRIMARY KEY'

exec(@code)
...
Рейтинг: 0 / 0
ALTER TABLE в цикле.
    #32031799
Олег Яговкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот еще:
когда меняю EXEC @code='ALTER TABLE.....

на:
SET @code='ALTER TABLE.....
EXEC @code

то выдает:
Server: Msg 2812, Level 16, State 62, Line 26
Could not find stored procedure 'ALTER TABLE JZapBoil ADD ID int identity CONSTRAINT ID_pk PRIMARY KEY'.

и так для каждой таблицы подлежащей изменению.
...
Рейтинг: 0 / 0
ALTER TABLE в цикле.
    #32031800
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EXEC sp_MSForEachTable 'ALTER TABLE ? ADD X_ID int identity CONSTRAINT ID_pk PRIMARY KEY'
...
Рейтинг: 0 / 0
ALTER TABLE в цикле.
    #32031804
Олег Яговкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory.
>Интересный у вас однако формат вызова.

EXEC 'ALTER TABLE '+@name2+
' ADD ID int identity CONSTRAINT ID_pk PRIMARY KEY'

так же выдает: Line 24: Incorrect syntax near 'ALTER TABLE '.

>либо

set @code='ALTER TABLE '+@name2+
' ADD ID int identity CONSTRAINT ID_pk PRIMARY KEY'

exec(@code)
Эта работает. Большое спасибо.

2Jimmers
Спасибо за расширение кругозора. Обязательно воспользуюсь и Вашей конструкцией.
Спасибо всем. Вопрос снят.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ALTER TABLE в цикле.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]