2015-01-08 2 views
0

3 개의 업데이트 문을 하나로 병합하려고합니다.오라클 업데이트 조건 (조건이있는 경우)

"UPDATE DOT_WORKS SET START_DATE = :StartDate WHERE ID = :WorksId and END_DATE IS NULL;" 
"UPDATE DOT_WORKS SET WORKS_TYPE = :WorksType WHERE ID = WorksId and WORKS_GROUP = :WorksGroup;" 
"UPDATE DOT_WORKS SET WORKS_CONNECTION = :WorksConn WHERE ID = WorksId and WORKS_PLACE = :WorksPlace;" 

내가 할 수있는 방법이 있는지 궁금합니다. 내가 그렇게하려는 이유는 데이터베이스 호출을 저장하기 위해서입니다. db를 3 대신 1 회 호출하는 것이 더 효율적입니다.

감사합니다.

답변

2
UPDATE DOT_WORKS 
SET START_DATE = case when END_DATE IS NULL then :StartDate else START_DATE end, 
    WORKS_TYPE = case when WORKS_GROUP = :WorksGroup then :WorksType else WORKS_TYPE end, 
    WORKS_CONNECTION = case when WORKS_PLACE = :WorksPlace then :WorksConn else WORKS_CONNECTION end 
WHERE ID = :WorksId 
and 
(
    END_DATE IS NULL OR 
    WORKS_GROUP = :WorksGroup OR 
    WORKS_PLACE = :WorksPlace 
) 
+0

멋진데! 고마워요. – Grentley