티스토리 툴바


Static SQL2009/02/09 21:15
Update문을 Static SQL로 구성하는 것도 쉬운 일은 아니다. 아이디어를 알고 보면 별 거 아니지만, 아무 것도 없는 상황에서 그런 아이디어를 생각하는 것은 솔직히 어렵다. 이 글도 물론-_- 필자의 아이디어는 아니다.

Update문을 Static SQL로 구성하기 어려운 것은 Parameter Binding을 사용하기 어렵기 때문이다. 보통 Update는 전체 Column에 이루어지지 않고 달라진 하나 또는 두개의 Column에만 이루어 지기 때문이다.
즉, 아래와 같은 방식은 통하지 않는다.
Update Table1 Set column1 = :v1, Set column2 = :v2
Where pk_column = :v3

그렇다고 Dynamic SQL이 정당화 될 수는 없지 않겠는가? 바로 앞 포스트에서 알아 본 Case When문과 약간의 Idea를 이용하면 간단하게 해결할 수 있다.
  • Update 할 내용이 없는 경우는 원래 값으로 Update를 해준다.
  • Update할 내용이 있는지 없는지 여부는 Varchar2계열이라면 Length를 Check하면 되고, 숫자라면 전혀 올 수 없는 값을 주면 될 것이다.
  • 미리 정해진 값이 있다면 입력값에 따라 처리할 수 있다.(ex : sysdate)

이제 Idea를 조합해보자.

Update Table1
    Set column1 = (case when Length(:v1) > 0 then :v1 else column1 end),
    Set column2 = (case when :v2 = ‘today’ then sysdate else column2 end)
Where pk_column = :v3

알고 보면 간단한 Update문의 Static SQL 처리였다.

저작자 표시 비영리 변경 금지
블로그코리아에 블UP하기
Posted by 막장개발자

TRACKBACK http://rtti.tistory.com/trackback/9 관련글 쓰기

댓글을 달아 주세요