【发布时间】:2018-11-05 12:58:25
【问题描述】:
供应商以其无限的智慧决定将假期数据集按月拆分为单独的表,即
holidayPlanner.dbo.holiday_201802
holidayPlanner.dbo.holiday_201803
holidayPlanner.dbo.holiday_201804
holidayPlanner.dbo.holiday_201805
系统会在员工请求当月假期时立即生成这些表格。我可以编写一个使用动态 SQL 的查询来创建一个我可以使用的 UNION 查询。
有没有什么方法可以在没有动态 SQL 的情况下完成?理想情况下,我可以创建一个表值函数来获取结果?
【问题讨论】:
-
你能让他们创建一个将数据合并在一起的视图吗?尽管这也需要他们更新该视图作为流程的一部分。
-
我建议了一个 DDL 触发器,它使用基于来自 sys.tables 的数据的动态 SQL 重新创建视图。我仍然希望有一个不需要动态 SQL 的解决方案。
-
您确定没有一个底层表可以容纳所有这些表,这些表是临时创建的或作为视图本身创建的?如果没有基础表,这似乎是我见过的最糟糕的数据库设计!它需要添加假期的过程才能获得表创建权限,这在任何离开的生活中都是不可取的......也许找到更好的供应商:-)
-
确实是无限智慧。不幸的是,我认为这里不能避免动态 SQL。
标签: sql-server sql-server-2012