Member 13908127 Ответов: 1

Как изменить представление в SQL server


Как изменить представление, если имя базы данных и команда SQL являются переменными
Пример как показано ниже:
объявить @sqlcommand, который имеет тип nvarchar(Макс),@db_py тип nvarchar(50)
set @db_py='PY202'
набор @команда sqlcommand='альтер испытание смотреть в качестве
выберите * из PY_S01
союз всех
выберите * из PY_S02'
метод exec(Н использовать "'+@db_py+"';exec для процедуры sp_executesql Н"'+@sqlcommand объект+"")

Что я уже пробовал:

1.я меняю последнюю комманду на
exec(N'use PY202;exec sp_executesql N"'+@sqlcommand+"")
выполняйте успешно!
2.набор @команда sqlcommand='использовать '+@db_py+тип char(10)+'идти'+тип char(10)+'изменить вид теста, как
выберите * из PY_S01
союз всех
выберите * из PY_S02'
exec(@sqlcommand)

выполнить не удалось
но я печатаю @sqlcommand и копирую результат для выполнения ,успех

Santosh kumar Pithani

Как я знаю, оператор "Go" создает проблему из-за "Go" в строке запроса.

1 Ответов

Рейтинг:
7

Santosh kumar Pithani

--i hope your view name is same and existed in all db .If yes, below query will help you.
DECLARE @sqlcommand NVARCHAR(MAX),@db_py NVARCHAR(50)
SET @db_py='PY202'
SET @sqlcommand='USE '+QUOTENAME(@db_py)+' 
                  GO
				 ALTER VIEW test AS
                    SELECT * FROM PY_S01
                     UNION ALL
                    SELECT * FROM PY_S02';

--you can directly use DB name in alter view command as like below query.

SET @sqlcommand='ALTER VIEW test AS SELECT * FROM PY_S01  UNION ALL SELECT * FROM PY_S02';
SET @sqlcommand=REPLACE(@sqlcommand,'ALTER VIEW test','ALTER VIEW'+SPACE(1)+QUOTENAME(@db_py)+'.DBO.test ');

EXEC(@sqlcommand)


Santosh kumar Pithani

я хочу добавить еще одну вещь, то есть если вы добавляете столбцы в таблицу, но это не отражается на представлениях, то в этом случае вы должны использовать команду exec sp_refreshview.

Member 13908127

Спасибо за ваш совет,я решил этот вопрос,это вопрос кавычек
метод exec(Н использовать '+@db_py+';exec для процедуры sp_executesql Н"'+@sqlcommand, который

Santosh kumar Pithani

Всегда Добро Пожаловать!