如何通过使用SQL Server中的值来查找要用于from语句的相关表/视图名称

时间:2018-11-15 17:19:30

标签: sql sql-server sql-server-2012

我在SQL Server中有一个表X,其中包含一个名为Type varchar(10)的列,该列具有15个潜在值:AAA, BBB1, BBB2, CCC, ...和另一个名为IfExists bit的列。

在同一个数据库中,我有15个不同的视图,每个Type的视图,也包括X_ID。视图名称示例:

View_ReportingAAA
View_ReportingBBB1
View_ReportingBBB2
View_ReportingCCC
....

通常,我要做的是通过使用Type中提供给我的X_ID来查看记录的Table X,并使用对相关视图的选择查询来获取一些数据。

如果在相关视图中有记录ID {{1}的记录,现在我需要做的是为Table X创建一个触发器,以将IfExists字段的值设置为1。 }。

我的问题是:为此,通过使用主表中字段的值来查找和使用相关视图名称的最佳方法是什么?

我正在为此使用以下代码,但是我不确定这是否是处理此问题的最有效方法。任何帮助或建议,将不胜感激。

X_ID

1 个答案:

答案 0 :(得分:1)

也许这会更容易:

declare @ifExists bit
select @ifExists=count(*) from INFORMATION_SCHEMA.VIEWS
    where TABLE_NAME='View_Reporting'+(select [Type] from X where X_ID=@X_ID)
update X set IfExists=@IfExists where X_ID=@X_ID and IfExists<>@IfExists
相关问题