我該如何編寫一個SQL存儲過程,我希望參數在select語句中是可選的?如何使用SQL存儲過程編寫過濾的查詢?
0
A
回答
4
試試這個。讓SPs輸入參數控制過濾可選,默認值爲null。在每個SELECT語句的WHERE子句,寫這樣的謂詞:
Create procedure MyProcedure
@columnNameValue [datatype] = null
As
Select [stuff....]
From table
Where ColumnName = Coalesce(@columnNameValue , ColumnName)
這樣,如果你不包括參數,或者如果你傳遞一個空值的參數,select語句將過濾的其中列值等於其本身(在該列上實際上根本不做任何濾波)
唯一的負面因素是它阻止您能夠將null作爲有意義的值傳遞給顯式僅過濾空值....(即,只選擇值爲空的行)一旦採用上述技術,您將需要添加另一個參數來實現該類型的需求。 (比如說,@GetOnlyNulls TINYINT = 0,或類似的東西)
Create procedure MyProcedure
@columnNameValue [datatype] = null,
@GetOnlyNulls Tinyint = 0
As
Select [stuff....]
From table
Where (ColumnName Is Null And @GetOnlyNulls = 1)
Or ColumnName = Coalesce(@columnNameValue , ColumnName)
+0
我喜歡這個。從來沒有想過這樣做。 +1 – CodeLikeBeaker 2012-07-22 19:04:17
相關問題
- 1. SQL查詢/存儲過程
- 2. MS-SQL查詢 - 通過存儲過程
- 3. 如何編寫存儲過程的插入查詢
- 4. 如何用if編寫存儲過程
- 5. 如何編寫通用存儲過程?
- 6. 如何使用存儲過程中的修剪sql查詢
- 7. 如何過濾sql查詢
- 8. 問:如何編寫查詢來顯示未使用的存儲過程?
- 9. 擴展存儲過程的SQL查詢
- 10. 存儲過程的sql查詢
- 11. 如何寫SQL Server存儲過程
- 12. LINQ到SQL:「存儲過程不能裏面查詢中使用」不能內部使用存儲過程查詢
- 13. 如何編寫存儲過程
- 14. 如何編寫處理存儲過程
- 15. 編寫Oracle存儲過程
- 16. 如何使用graphql編寫過濾查詢?
- 17. SQL - 存儲過程 - 從子查詢
- 18. Perfoming SQL查詢或存儲過程?
- 19. SQL查詢存儲過程錯誤
- 20. 置換SQL查詢與存儲過程
- 21. 解釋SQL Server存儲過程/查詢
- 22. 調用MySQL的存儲過程/查詢從MS SQL存儲過程
- 23. 電源查詢 - 如何使用SQL查詢的過濾列表
- 24. 使用t-sql檢索存儲過程的過濾列表
- 25. 使用SQL來過濾存儲過程的結果
- 26. SQL查詢通過過濾
- 27. 使用LINQ查詢與存儲過程
- 28. 使用存儲過程或查詢
- 29. 使用動態查詢存儲過程
- 30. 如何使用SQL-Server存儲過程?
** **什麼數據庫系統,以及哪個版本? * SQL *只是*結構化查詢語言* - 許多數據庫系統使用的語言,但不是數據庫產品......有關存儲過程等功能的細節通常是供應商特定的 - 所以我們真的需要知道什麼**數據庫系統**你正在使用.... – 2012-07-22 19:53:02