3

我在 SQL Server 2008 R2 中有一个过程,我想将数据输入到 vol_Hours 列并在它不为空之前检查它,然后加上它在列中的旧数据条目,如果它是 NULL 然后将条目添加到不加 NULL 值的列。我不能添加 2+NULL,因为它 = NULL。我的代码是:

    create procedure updateVolunteerHours 
    @vol_ID int, @vol_Hours int
    As
    if vol_Hours is NULL 
    -- vol_Hours it is the Column Name
    Update Personal_Information set vol_Hours = @vol_Hours where vol_ID = @vol_ID
    else
    Update Personal_Information set vol_Hours = @vol_Hours + vol_Hours where vol_ID = @vol_ID
4

1 回答 1

6

在这种情况下,只需更新添加表达式以使用COALESCE(或 ISNULL 或 CASE)并完全删除 IF 语句。

Update Personal_Information
set vol_Hours = COALESCE(vol_Hours, 0) + @vol_Hours
where vol_ID = @vol_ID

如果两个分支都做了完全不同的事情,那么必须更改条件以使用查询的结果。

IF EXISTS(SELECT * FROM Personal_Information
          WHERE vol_ID = @vol_ID
          AND vol_Hours IS NULL) ..

..但这只是这里不需要。

于 2013-10-25T20:38:25.953 回答