SELECT 쿼리문 질문드립니다. 0 3 1,112

by ssyy [2014.12.15 16:00:05]


주기적으로 SELECT 를 해서 데이터를 가져오는 프로세스가 있는데,

데이터가 없을땐 없는 상태로 SELECT 를 하지만 데이터를 삽입하면, 바로 ORA-01722: invalid number 에러가 출력 됩니다.;;

이런 경우는 처음인데 왜 그런걸까요?

 

SELECT a.seqno,
       call,
       req,
       cont.msg,
       reqtime,
       cont.ms_no,
  FROM data
   LEFT JOIN cont
       ON data.FKCONTENT = cont.SEQNO
 WHERE reqtime > sysdate
       AND result IN ( 0,9 )
       AND ROWNUM < 3000;

 

by 마농 [2014.12.15 16:41:45]

숫자가 아니라는 오류죠.
질문하실 때 좀 더 명확하게 해주실 필요가 있습니다.
 - 어느 테이블에 입력을 했다는 건지?
 - 에러가 Insert 할 때 난다는 건지? Insert 후 Select 할 때 난다는 건지?
Select 할 때 에러난다고 가정하면... 의심할 수 있는 부분은 두군데입니다.
 1. data.fkcontent = cont.seqno
   => 두 컬럼 중 한 컬럼이 숫자형이고 한컬럼은 문자형인데... 문자형 컬럼에 숫자가 아닌 문자가 저장된 경우
 2. result IN (0, 9)
   => result 컬럼이 문자형이고 숫자가 아닌 자료 저장되어 있는 경우.
Insert 할 때 나는 에러라면?
 => 숫자컬럼에 문자 입력한거죠.


by ssyy [2014.12.15 17:06:27]


 - 어느 테이블에 입력을 했다는 건지?

Data 테이블을 주기적으로 select 문을 날려서 데이터처리를 합니다. 그래서 cont 테이블에 insert 후 해당 seq 를 참조하여 data 테이블에 insert 를 하게 되면 주기적으로 select 를하다가 데이터가 있으면 처리하는 방식입니다.

 - 에러가 Insert 할 때 난다는 건지? Insert 후 Select 할 때 난다는 건지?

데이터가 입력되기전 select 를 할 때는 이상이 없다가 insert 문을 한 후에는 해당 에러가 발생합니다.


Select 할 때 에러난다고 가정하면... 의심할 수 있는 부분은 두군데입니다.
 1. data.fkcontent = cont.seqno
   => 두 컬럼 중 한 컬럼이 숫자형이고 한컬럼은 문자형인데... 문자형 컬럼에 숫자가 아닌 문자가 저장된 경우

- 두컬럼 모두 number  타입의 컬럼입니다.
 2. result IN (0, 9)
   => result 컬럼이 문자형이고 숫자가 아닌 자료 저장되어 있는 경우.

- result 컬럼은 문자형이며 숫자로 insert 하게 됩니다.

- 0,9 는 string 으로 맵핑되어 있는 값을 넘겨주어 쿼리를 완성 하게 되는데, 로그를 찍으니 저렇게 나오더라구요.

이외의 다른 경우는 없는 걸까요.?


by 마농 [2014.12.24 13:43:38]

result 에 숫자가 아닌 문자가 저장된걸로 생각되네요.

조건식을 result IN ('0', '9') 로 바꾸세요.
 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입