join하여 update시 null 에러 (ora-01407) 0 5 6,195

by 쌈장묵자 [SQL Query] ora-01407 update [2016.01.11 15:48:53]


update
account set
code = (select code from codezip
where corp_cd = '1212')
, stat = ' 0'
where no = '123123'
and table_cd ='020'

이라는 코드가 있습니다 서버에서 구동시 ora-01407 에러가 발생하는데

검색결과 어디에 update해야 할지 명확하지 않아 기존의 값을 null로 처리해 이 에러가 발생한다고하는데

제가 update를 하고 싶은 테이블은 account라는 테이블입니다

exists를 이용해서 쿼리를 작성해야 한다고 하는데 어떻게 작성해야 할지 감이 안잡혀서;; 도와주세요

by 아발란체 [2016.01.11 16:04:35]

CODE 값은 필수 입력 항목이나 서브쿼리 결과에 NULL이 있어서 발생한 경우입니다.

위 구문이 실 사용하는 SQL이 아닐 것 같은데 맞나요?

실 사용하는 것이라면 서브쿼리 조건절이 대입이 아닌 아예 박혀 있어서 전체 결과가 NULL이라는 것이고 모두 NULL나오는 결과를 필수 입력 항목으로 되어 있는 CODE 항목 값으로 업데이트 한다는 말인뎅...

EXISTS 절이 아닌 MERGE 구문이 보다 명확 할 것 같습니다.

머지 구문으로 짜드리고 싶어도.. 서브쿼리가 독립적으로 돌고 있어서... ㅡ,.ㅡ;;

MERGE 관련 강좌 : http://www.gurubee.net/lecture/2225


by 쌈장묵자 [2016.01.11 17:54:57]
select code from codezip
where corp_cd =#{}
이건 파라미터 값으로 받아오고 있구요
null 값은 아닙니다 ㅠ
신기한게 토드에서 는 update가 되는데 서버에 적용해서 로그를 보면 저 에러가 발생하네요;; 
파라미터 값도 제대로 받아 오구요 다른칼럼은 다 있고 code랑 stat만 업데이트 하는건데 다른 not null 칼럼을 null로 업데이트 쳐서 발생하는 에러 같은데 모르겠네요 

by 아발란체 [2016.01.11 17:57:10]

corp_cd 값이 아닌 corp_cd 값을 바인딩하여 출력된 결과가 null이 발생하여 발생한 문제입니다.


by 쌈장묵자 [2016.01.11 18:05:23]

그 바인딩 한값이 null이 아니어서 미치겠네요 ㅠㅠ

로그상 parameter값은 제대로 받아 오거든요


by jkson [2016.01.11 18:34:20]
select code from codezip
where corp_cd = '1212'
이 결과가 null이 아닌데 오류 난다구요? 그럴리가요?
 
corp_cd 값은 잘 받아왔었더라도 저 쿼리의 결과가 null일 것 같은데요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입