微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – 使用动态sql在指定数据库中创建View?

我正在写一个动态的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.jb51.cc/mssql/79781.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐