Estou escrevendo um sql dinâmico para soltar e criar vista em banco de dados diferente.
Então eu escrevi:
set @CreateViewStatement =
'
USE ['+ @DB +'];
CREATE VIEW [dbo].[MyTable]
AS
SELECT ........something
exec (@CreateViewStatement)
Isso me dá erro:
'CREATE VIEW' deve ser a primeira instrução em um lote de consulta.
Se eu remover a instrução USE DATABASE, ela funcionará bem, mas o banco de dados não será mais especificado ....
Como posso resolver este problema?
sql-server
sql-server-2005
dynamic-sql
King Chan
fonte
fonte
Uma maneira de lidar com esse caso é colocar a instrução GO after use.
fonte
GO
é um delimitador de lote nas ferramentas do cliente, não uma palavra-chave TSQL.