我有一個返回數據的存儲過程。 。有條件的where子句T-SQL
我需要改變基礎上傳遞的參數的where子句
例如,參數爲:
@Region NVARHCAR(15)
@CountryCode NVARCHAR(2)
@ProductA BIT
@ProductB BIT
@ProductC BIT
如果@region傳入,那麼這裏應該由區域選擇,如果@CountryCode通過,那麼應該按國家代碼選擇。
對於產品,如果它們中的任何一個設置爲true,則應在哪裏選擇該項目的數據。
這樣的聲明看起來是這樣的,如果@region在傳遞和@ProductA和@ProductC設置爲true:
SELECT *
FROM table
WHERE Region = @Region AND
(Product = 'ProductA' OR Product = 'ProductC')
另外,該產品的條件可能是一個報表。
如果@CountryCode傳遞在它看起來如下:
SELECT *
FROM table
WHERE CountryCode = @CountryCode AND
(Product = 'ProductA' OR Product = 'ProductC')
是@CountryCode和@region可能被傳入它甚至可以
有什麼辦法有T做到這一點-SQL,而不是從應用程序生成的動態SQL?
感謝
有關此主題的權威性文章,請參閱[T-SQL中的動態搜索條件](http://www.sommarskog.se/dyn-search.html)。 –
處理此問題的最常見的通用方法是查詢示例(http://en.wikipedia.org/wiki/Query_by_Example) – dkretz