在我的存儲過程中有輸入參數。例如,條件在where子句中帶有可選參數
DECLARE @fromDate DateTime = NULL
DECLARE @toDate DateTime = NULL
DECLARE @Id int = NULL
我想要寫在where子句一樣......如果提供沒有fromdate然後搜索必須在@fromDate做的條件。如果不能提供@fromDate然後檢查@Id變量,如果這不是空然後@Id搜索基礎...
喜歡的東西...
where
CASE
when @fromDate is not null
THEN (@FromDate is null or ([Created] between @FromDate and @ToDate))
ELSE (@requestId is null or [email protected])
有一個問題下面的解決方案。 ..if @fromDate和@Id都提供,那麼這將做他們的intesect,沒有什麼是返回.....條件應該是...如果@fromDate給予的優先級給@fromDate,即使@Id是提供的和結果不能依賴於@Id參數....
你爲什麼要*支持*的能力,通過一個非空' @ fromDate'和'@ Id'但是忽略*其中之一?如果我打電話給你的程序併爲他們傳遞價值觀,我當然不會期望它按照你所描述的去做。 – 2013-04-09 06:27:09
無論如何,尋找這樣的東西的通常地點是Erland Sommarskog的[T-SQL中的動態搜索條件](http://www.sommarskog.se/dyn-search.html) – 2013-04-09 06:28:06