加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2021-03-31 15:56:50 所属栏目:编程 来源:网络整理
导读:我正在写一个动态的sql来删除并在不同的数据库中创建视图. 所以我写道: set @CreateViewStatement = ' USE ['+ @DB +']; CREATE VIEW [dbo].[MyTable] AS SELECT ........somethingexec (@CreateViewStatement) 它给了我错误: ‘CREATE VIEW’ must be the

我正在写一个动态的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)

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读