2015-01-08 27 views
0

目前我有一個存儲過程有一個更新語句,約有40個值被更新。其中一些僅在使用COALESCE()時輸入不爲空時纔會更新。我想知道我是否也可以做類似的事情,但基於另一個參數的輸入以及本身。例如:如何根據2個參數設置更新語句中的值?

UPDATE MyTable 
SET FirstName = @FirstName, 
    LastName = @LastName, 
    JobNumber = (IF @MyMainParameter IS NOT NULL 
        COALESCE(@JobNumber, JobNumber) 
       ELSE 
        JobNumber) 
WHERE ... 

顯然,這並不工作,但在這個例子中,我只是想更新的工作號碼,如果@MyMainParameter不爲空,如果@JobNumber參數不爲null。

很顯然,我可能只是做基於我@MyMainParameter是否爲空或不是,如一個單獨的更新語句:

IF @MyMainParameter IS NOT NULL 
BEGIN 
    UPDATE MyTable 
    SET JobNumber = COALESCE(@JobNumber, JobNumber) 
    WHERE... 
END 

然而,它似乎並沒有最佳的做2條更新語句,如果我可以只做1.

回答

0

原來我腦部凍結。我明顯可以很容易地使用CASE WHEN語句這樣做:

UPDATE MyTable 
SET FirstName = @FirstName, 
    LastName = @LastName, 
    JobNumber = CASE WHEN @MyMainParameter IS NOT NULL THEN COALESCE(@JobNumber, JobNumber) ELSE JobNumber END 
WHERE ... 
相關問題