|
|
|
ALTER TABLE в цикле.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Не подскажет ли кто нибудь как добавить доп. поле в 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 переменными вместо имени таблицы, что то нигде не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2002, 12:02:52 |
|
||
|
ALTER TABLE в цикле.
|
|||
|---|---|---|---|
|
#18+
Поподробнее, пожалуйста, что значит не работает - код ошибки, текст ошибки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2002, 12:13:07 |
|
||
|
ALTER TABLE в цикле.
|
|||
|---|---|---|---|
|
#18+
Server: Msg 170, Level 15, State 1, Line 24 Line 24: Incorrect syntax near 'ALTER TABLE '. К сожалению самый подробный текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2002, 12:15:31 |
|
||
|
ALTER TABLE в цикле.
|
|||
|---|---|---|---|
|
#18+
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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2002, 12:23:52 |
|
||
|
ALTER TABLE в цикле.
|
|||
|---|---|---|---|
|
#18+
А вот еще: когда меняю 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'. и так для каждой таблицы подлежащей изменению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2002, 12:26:02 |
|
||
|
ALTER TABLE в цикле.
|
|||
|---|---|---|---|
|
#18+
EXEC sp_MSForEachTable 'ALTER TABLE ? ADD X_ID int identity CONSTRAINT ID_pk PRIMARY KEY' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2002, 12:28:34 |
|
||
|
ALTER TABLE в цикле.
|
|||
|---|---|---|---|
|
#18+
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 Спасибо за расширение кругозора. Обязательно воспользуюсь и Вашей конструкцией. Спасибо всем. Вопрос снят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2002, 12:43:15 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32031799&tid=1822497]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
357ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 639ms |

| 0 / 0 |
