Вам нужно использовать динамический sql .
Например:
DECLARE @sql varchar(max) = '
IF OBJECT_ID('''+@SQLLView+''', ''V'') IS NOT NULL
DROP VIEW '+@SQLLView+'
create view '+@SQLLView+' as
select * from [dbo].['+@SourceTable+']
'
EXECUTE (@sql);
Есть много других соображений, которые вы найдете при изучении ссылки, которую я разместил,Например, вы не можете использовать GO в хранимой процедуре, поэтому я убрал это, но так как ваш желаемый код, вероятно, не будет работать без него, вам нужно это выяснить (возможно, две хранимые процедуры).Также лучше использовать функцию QUOTENAME в динамическом SQL вместо того, чтобы заключать в строку квадратные скобки.
Уже есть много статей о динамическом sql, поэтому мне не нужно добавлять здесь больше подробностей.Честно говоря, это, вероятно, проблема XY, и, вероятно, есть лучший способ сделать то, что вы хотите, чем то, что вы пытаетесь сделать, но этот ответ рассматривает ваш вопрос как академический.