我们的SQL Server 2005数据库有近100个不同的表。我们将提供一个根据用户定义的过滤器搜索某些信息的功能。我们的过滤器配置将非常复杂。用户可以轻松地创建一个筛选器,该筛选器可以连接20多个具有复杂条件的表。
为了降低连接的复杂性,我们计划创建两个SQL Server视图。但该解决方案本身似乎不足以简化SQL。我们将根据过滤器配置生成SQL。SQL将动态
这是我正在处理的一个场景:现在我们有一个SQL语句,读起来像这样:
SELECT a.ID,a.MsgNumber,CASE WHEN @HasAccess=1 THEN Title ELSE '***我修改了这部分代码,这样我们就可以使用NHibernate标准来生成相同的结果(这样我们就可以根据用户选择的过滤器生成动态查询)。我知道我可以使用投影从条件中获得一些字段或常量值,但我不知道应该如何组合它们来做我想做的事情。
我使用这个字段来生成一些动态SQL。IF @SourceTableNameFilter(SP参数)=@SourceTableName(来自映射表) BEGIN
生成并执行一些基于SourceTableName的动态SQL。问题是,我希望这对所有从select返回的表都有效,但是如果@SourceTableNameFilter参数存在并且不为null,那么只为游标中与我的过滤器参数匹配的任何行生成动态SourceTableNameELS