我正在写一个动态的
sql来
删除并在不同的
数据库中创建视图.
所以我写道:
set @CreateViewStatement =
'
USE ['+ @DB +'];
CREATE VIEW [dbo].[MyTable]
AS
SELECT ........something
exec (@CreateViewStatement)
它给了我错误:
‘CREATE VIEW’ must be the first statement in a query batch.
如果我删除USE DATABASE语句它工作正常,但然后数据库不再指定….
我怎么解决这个问题?
您可以使用嵌套的EXEC
调用. USE更改的
数据库上下文仍然存在于子批处理中.
DECLARE @DB SYSNAME
SET @DB = 'tempdb'
DECLARE @CreateViewStatement NVARCHAR(MAX)
SET @CreateViewStatement = '
USE '+ QUOTENAME(@DB) +';
EXEC(''
CREATE VIEW [dbo].[MyTable] AS
SELECT 1 AS [Foo]
'')
'
EXEC (@CreateViewStatement)
原文链接:https://www.f2er.com/mssql/79781.html