你好,我想创建一个输入创建SQL视图的参数
IF OBJECT_ID('view_rhscir2_CiMobTrack1', 'V') IS NOT NULL
DROP VIEW view_rhscir2_CiMobTrack1
GO
create view view_rhscir2_CiMobTrack1 as
select * from [dbo].[Form_RHSCIR2_CIMobilityTracking_1]
GO
所需代码:
IF OBJECT_ID('@SQLLView', 'V') IS NOT NULL
DROP VIEW @SQLLView
GO
create view @SQLLView as
select * from [dbo].[@SourceTable]
GO
答案 0 :(得分:0)
您需要使用dynamic 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,所以我删除了它,但是由于您想要的代码可能无法使用它,因此您需要弄清楚这一点(也许是两个存储过程)。另外,最好在动态SQL中使用QUOTENAME函数,而不要将方括号放在字符串中。
已经有很多关于动态sql的文章,所以我不需要在这里添加更多细节。坦率地说,这可能是一个XY问题,并且可能有比您尝试做的事更好的方式来做您想做的事,但这答案将您的问题视为学术问题。