SQL动态WHERE子句DataSet

时间:2016-12-14 19:49:07

标签: sql dynamic

我有一个带有where子句的SQL查询,这些子句必须根据某些列的值列表排除行,这些列表可能是硬编码的(由用户提供)或从其他选择查询构造。 此外,硬编码列表可能会被用户更新,因此我每次都需要更新查询列表,这是不方便的。

我想知道参数这些列表的最佳方法。

WHERE子句的例子:

WHERE
Article_Code not in ('PA_003','PA_003','PE_234','FR_980','FA_333','FC_001','TA_999','FC_212','DC_009','FF_333','PR_001')
AND
((Partner_Status != 'Radied') or (Partner_Status = 'Radied' and Partner_Code in ('PR_000453','PR_0004311T','PR_V3345','PR_004D55') )) 
AND
(Case_Code not in (select Case_Code from Agreement where DDR = 3))

一种方法是使用以下结构构建参数表:(ExclusionCode - Column - ColumnMemberToExclude - ExclusionDescription):

  • ExclusionCode是一个内部代码,我需要帮助确定排除的原因。
  • Colum是在where(ex:Article_Code)
  • 上使用的列
  • ColumnMemberToExclude是在哪里使用的成员(例如:PA_003)
  • ExclusionDescription:功能描述(例如:排除保时捷产品列表)

然后将where子句构造为此表中的字符串。

这是最好的方法吗?

0 个答案:

没有答案