Создание представления динамически через переменную - SQL Server - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь создать представление 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)

См. Изображения: image source : https://imgur.com/a/qIhN339

источник изображения: https://imgur.com/a/qIhN339

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Я не хочу быть грубым, но почему бы не использовать хранимую процедуру вместо представления?

Здесь вы можете увидеть подробную информацию о хранимых процедурах.

0 голосов
/ 12 апреля 2019
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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...