如果sql子句和sql条件那么动态sql是最好的方法吗?

时间:2018-01-09 22:21:14

标签: c# sql-server dynamic-sql

我的工作任务涉及在应用程序中搜索搜索页面的SQL查询,该应用程序根据众多文档查询不同的文档(包括收入,发票,销售合同,销售订单,选择列表等)参数(文档创建日期范围,最终客户,文档的状态值等)。

sql select子句组件和sql条件组件将根据Web用户在搜索页面中输入值的方式而变化(即动态)。

一切似乎都暗示我使用动态SQL实现解决方案,我真的不喜欢。

我还在考虑使用String Builder在C#中构建sql查询,但在速度性能方面不会更差。

有人可以建议任何其他方法吗?

1 个答案:

答案 0 :(得分:2)

如果您要使用传统的SQL路由,并且在编码时已知可能的参数列表,但许多是可选的,那么仍然可以在没有动态SQL的情况下完成。例如。

(@BeginDate Is Null or Document.BeginDate>=@BeginDate) And (@EndDate Is Null or Document.EndDate<=@EndDate) And (@CustomerId Is Null or Document.CustomerId=@CustomerId) And (@DocumentStatus Is Null or Document.Status=@DocumentStatus)