[英]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.