3

SQL Server 2008 R2 に手順があります。データを vol_Hours 列に入力し、それが null でない場合は前にチェックしてから、列にある古いデータを含むエントリを追加し、NULL の場合はエントリをプラス NULL 値のない列。= NULL であるため、2+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 に答える