2013-10-25 4 views
1

SQL Server 2008 R2에서 프로 시저를 가지고 있습니다. vol_Hours 열에 데이터를 입력하고 이전에 데이터가 null이 아니고 이전 데이터가있는 항목을 더하기 전에 확인하고 싶습니다. 열에 NULL이면 NULL 값을 더한 항목을 열에 추가하십시오. 2 = NULL을 추가 할 수 없습니다 = NULL이기 때문에. 내 코드는 다음과 같습니다SQL Server에서 열이 NULL인지 또는 NOT인지 확인

이 경우
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 

답변

3

는, 단지 추가 표현이 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) .. 

..하지만 여기서는 필요하지 않습니다.

+1

누군가가 지루할 경우를 대비하여 [COALESCE vs. ISNULL]에 대한 기사를 썼습니다 (http://www.mssqltips.com/sqlservertip/2689/deciding-between-coalesce-and- isnull-in-sql-server /). –

+0

@ user2864740 | 고마워요. –

+0

나는 당신의 게시물을 답으로 써야 겠지만 누군가가 다른 해결책을 가지고 있는지 보도록하겠습니다. 나는 왜 그것이 작동하지 않는지 나의 게시물로 원한다. –

관련 문제