通过变量动态创建视图-SQL Server

时间:2019-04-12 12:07:26

标签: sql sql-server

我正在尝试根据查询使用变量动态创建SQL Server视图。

我已经编写并测试了该查询,并且可以确认该查询可以与结果配合使用,我已附加了指向Imgur的链接以查看屏幕截图,因为由于某些原因我无法发布完整的查询。

但是,创建视图时,我收到一些错误,似乎无法解决!我已多次检查查询,并在创建视图时重新组织了代码。

declare @MarketingCampaignID int,
        @viewQuery nvarchar(max)

set @MarketingCampaignID = 246159

if exists(select * from sys.views 
          where name='vwCampaign_' + cast(@MarketingCampaignID as nvarchar(255)) + '_FlatValueTable')
begin
    set @viewQuery = 'drop view XMPieTracking.vwCampaign_' + cast(@MarketingCampaignID as nvarchar(255)) + '_FlatValueTable'
    exec (@viewQuery)
end

set @viewQuery = N'Create View XMPieTracking.vwCampaign_' + cast(@MarketingCampaignID as nvarchar(255)) + '_FlatValueTable'
set @viewQuery = @viewQuery + N'SELECT * FROM (...)

exec( @viewQuery)

查看图片。 https://imgur.com/a/qIhN339

2 个答案:

答案 0 :(得分:0)

set @viewQuery = N'Create View XMPieTracking.vwCampaign_' + cast(@MarketingCampaignID as nvarchar(255)) 
               + N'_FlatValueTable AS'  --Add `AS` here
set @viewQuery = @viewQuery + N' SELECT * FROM (...)
                                ^-- Add a space here

并在AS语句之前添加SELECT关键字。

答案 1 :(得分:0)

我不是无礼的,但是为什么不使用存储过程而不是视图呢?

Here,您可以查看有关存储过程的详细信息。