繁体   English   中英

SQL 2008中的语句时嵌套动态案例

[英]nest dynamic case when statements in sql 2008

我在.net中有以下代码。

foreach (string key in EntityNumbers.Keys)
{

                    if (EntityNumbers[key] != null)
                    {
                        e = new WebServices.Entity();
                        e.HierarchyLevel = key;
                        e.Number = EntityNumbers[key];
                        entities.Add(e);
                    }
                }

这必须转换为以下格式的SQL。

declare @HierarchyLevelValue int, @HierarchyLevel nvarchar;

SELECT * from table where 
CASE 
    WHEN @HierarchyLevel='COMPANY' THEN COMPANYNUMBER
    WHEN @HierarchyLevel='BRANCH' THEN BRANCHNUMBER
    WHEN @HierarchyLevel='BUSINESS' THEN BUSINESSNUMBER
END =@HierarchyLevelValue

上面的代码适用于单个实体,但是我如何实现多个

    SELECT * from table where COMPANYNUMBER=100 AND BRANCHNUMBER= 1
 AND BUSINESSNUMBER= 1

我可以将最终查询作为字符串形成并通过ExecuteSQL执行。 有什么方法可以避免形成字符串?

提前致谢。

我认为您最好使用动态sql。 http://www.kodyaz.com/articles/tsql-sp_executesql-with-output-parameters.aspx

jsut警惕动态sql的危险。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM