2010-12-23 6 views
3

이런 식으로 처리하려고하지만 오라클 코딩에 문제가 있습니다.If 문을 사용하여 테이블 업데이트 PL/SQL

BEGIN 
IF ((SELECT complete_date FROM task_table WHERE task_id = 1) IS NULL) 
THEN 
UPDATE task_table SET complete_date = //somedate WHERE task_id = 1; 
ELSE 
UPDATE task_table SET complete_date = NULL; 
END IF; 
END; 

하지만 이것은 작동하지 않습니다. 나는 또한 시도했다

IF EXISTS(SELECT complete_date FROM task_table WHERE task_id = 1) 

운이없는.

답변

8

실제 로직이 위와 유사한 경우 절차 블록이 필요하지 않다고 생각합니다.

. "ID 1 complete_date의 값이 NULL 인 경우, 그렇지 않으면 null로 설정 XXX로 업데이트"이 가정

은 당신의 작업입니다.

당신은 바로 실행할 수 ...

Update task_table 
    set complete_date = nvl2(complete_date,NULL, <**your date**>) 
    where task_id = 1; 

이 만 complete_date 새 날짜 null 인 레코드를 업데이트합니다.

+0

또한 Null이 아닌 경우 null로 지정하십시오. – Matt

+1

Matt, 위 쿼리를 업데이트했습니다. –

0

이 부품의 의도는 무엇입니까?

IF ((SELECT complete_date FROM task_table WHERE task_id = 1) IS NULL) 

는 complete_date가와 TASK_ID = 1 null의 경우 행이 있는지 찾아 그것을인가?

또는 task_id = 1 인 행이 없는지 확인해야합니까?

+0

거기에 완전한 날짜가있는 경우 사용자는 불완전한 것으로 표시해야하므로 거기에 null을 배치하십시오. 완료 날짜가없는 경우 사용자는 완료 날짜를 표시해야합니다. – Matt

관련 문제