2011-07-21 54 views
0

對於MSSQL 2008中的存儲過程,我有一個int輸出參數。該值可以爲null或可以填充。SQL Server過程參數爲空案例

我想寫一個聰明的單個SELECT語句,將返回一行: 如果填充了參數值的方式,返回該行 如果帕拉姆值爲null,返回前1行,其中issoftdeleted = 0

感謝您的所有想法。

回答

1
SELECT 
    TOP (CASE WHEN @param IS NULL THEN 2000000000 ELSE 1 END) 
    ... 
FROM 
    Mytable 
WHERE 
    SomeID = @param 
    OR 
    (@param IS NULL AND issoftdeleted = 0) 
ORDER BY 
    something --to make the top meaningful 

如果你希望一個行時設定@參數,然後使用TOP(1)

就個人而言,我會考慮使用IF語句和2周獨立的SELECT ...

0
SELECT TOP 1 * FROM SomeTable t 
WHERE (@someParam IS NULL AND t.issoftdeleted = 0) OR (t.someColumn = @someParam)