Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ALTER TABLE dbo.[@string_var] ADD name_report nvarchar (100) извлечь имя таблицы / 5 сообщений из 5, страница 1 из 1
07.03.2018, 13:28
    #39611797
alexey777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER TABLE dbo.[@string_var] ADD name_report nvarchar (100) извлечь имя таблицы
Здравствуйте.
Подскажите, пожалуйста, как правильно будет конструкция в заголовке?
Написал код добавляющий в таблицы новый столбец.

DEALLOCATE some_cursor

declare some_cursor cursor

for
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
open some_cursor

declare @string_var varchar(150)

fetch next from some_cursor INTO @string_var

WHILE @@FETCH_STATUS = 0

BEGIN

if columnproperty(object_id(@string_var),'name_report','AllowsNull') is null
ALTER TABLE dbo.[@string_var] ADD name_report nvarchar (100);
print @string_var

fetch next from some_cursor INTO @string_var
END

CLOSE some_cursor

DEALLOCATE some_cursor
...
Рейтинг: 0 / 0
07.03.2018, 13:38
    #39611802
alexey777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER TABLE dbo.[@string_var] ADD name_report nvarchar (100) извлечь имя таблицы
Получаю сообщение:
Сообщение 4902, уровень 16, состояние 1, строка 23
Не удалось найти объект "dbo.@string_var", так как он не существует, или отсутствуют разрешения.

Понимаю, что как-то нужно обратиться к значению переменной, как это правильно сделать, чтобы подставить в конструкцию ALTER TABLE
...
Рейтинг: 0 / 0
07.03.2018, 14:03
    #39611831
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER TABLE dbo.[@string_var] ADD name_report nvarchar (100) извлечь имя таблицы
alexey777Понимаю, что как-то нужно обратиться к значению переменной, как это правильно сделать, чтобы подставить в конструкцию ALTER TABLEНужно выполнять строку используя EXEC

Код: sql
1.
EXEC('ALTER TABLE dbo.[' + @string_var + '] ADD name_report nvarchar (100);')



Только аккуратнее с sql-injection
...
Рейтинг: 0 / 0
07.03.2018, 14:04
    #39611834
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER TABLE dbo.[@string_var] ADD name_report nvarchar (100) извлечь имя таблицы
alexey777,

Код: sql
1.
2.
3.
4.
5.
6.
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'';
SELECT @sql = @sql + N'ALTER TABLE ' + QUOTENAME([TABLE_SCHEMA]) + N'.' + QUOTENAME([TABLE_NAME]) + N'ADD name_report nvarchar (100);' + NCHAR(13) + NCHAR(10)
FROM INFORMATION_SCHEMA.TABLES;
PRINT @sql;
--EXEC (@sql);
...
Рейтинг: 0 / 0
07.03.2018, 14:07
    #39611837
alexey777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ALTER TABLE dbo.[@string_var] ADD name_report nvarchar (100) извлечь имя таблицы
СПАСИБО!!!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ALTER TABLE dbo.[@string_var] ADD name_report nvarchar (100) извлечь имя таблицы / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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