현재 A라는 테이블에 image 라는 컬럼이 BLOB으로 되어있습니다.
다음문장은 잘됩니다.
update A
set
image = @image
where id = @id
@imge는 아규먼트로 넘어오는 값이구요, 잘됩니다.
그런데 이 아규먼트가 null로 넘어오면 기존값을 그냥 다시 업데이트 하고
null 아니면 넘어온 아규먼트를 업데이트 해아하는데요.
update A
set
image = nvl(@image, imge)
where id = @id
이건 안먹습니다.
그래서
update A
set
image = decode( dbms_lob.getlength(@image), null, image, @image )
이렇게 고쳤는데요.
@image가 null 일때는 쿼리가 정상동작을 합니다.
그런데
@image가 null 아니면 @image를 업데이트 해야하는데
다음과 같은 에러가 납니다.
ora-01461 : can bind a LONG value only for insert into a LONG column
이런에러가 나서
deocode 를 전체 to_blob으로 싸줘봐도 안되고
이걸 case when으로 바꿔봐도 안됩니다.
인자값이 문제라면 제일 첫번째 쿼리도 안되어야 하는데
참 난감합니다.
해결방법을 좀 알려주시면 감사하겠습니다. |