프로시저 희안한 버그? 0 10 1,520

by ximplecode [Oracle 기초] #procedure# [2014.11.28 17:46:56]


안녕하세요

프로시저 개발하다 참. 어려운것도 아닌데 희안한 에러(?) 가 발생해서 이렇게 문의드립니다.

 

프로시져 내에서 해당 키값을 다음과 같이 가져오고 있습니다.

--실제 신청서에 있는 제출번호를 가져옴
PREQUERY := 'SELECT PRE_NO FROM TEMP_TABLEWHERE RC_MARK||RC_YEAR||RC_NO = ';
PREQUERY := PREQUERY || ' ( SELECT ORI_PRE_NO FROM TEMP_TABLE2 WHERE CO = ''' || DVCO || ''' AND PRE_NO = ''' || DVPRE || ''' ) '; 
 

EXECUTE IMMEDIATE PREQUERY INTO ORI_PRE_NO;

 --값은 123123123

실행 및 변수값에 저장도 잘되는데.

    SELECT  COUNT(*) INTO XTEST
    FROM    TEST_TB
    WHERE   CO = '100'
    AND     PRE_NO = '123123123';

    SELECT  COUNT(*) INTO XTEST
    FROM    TEST_TB    WHERE   CO = '100'
    AND     PRE_NO = ORI_PRE_NO (위 변수값);

 

두개의 쿼리는 한글자도 안빼놓고 똑같은 문장으로 되어있으나

변수에 값을 담아 조회한 결과값은 COUNT가 0

변수의 값과 똑같이 넣고 조회한값은 COUNT가 1

 

스페이스나 기타 다른 부분은 다 체크해보았으나.. 도무지 이유를 모르겠네요.

제가 잘못구현한 부분이 있을까요?ㅠ.ㅠ 아니면 비슷한 경험이라도 하신분?ㅜ.ㅜ

 

감사합니다~

by jkson [2014.11.28 17:50:29]

변수값 TRIM해도 똑같나요?


by ximplecode [2014.11.28 17:53:27]

넵. TRIM 해봤으나 현상은 동일하네요..ㅠ.ㅠ


by 신이만든짝퉁 [2014.11.28 17:53:47]

PRE_NO

위 컬럼의 데이터 타입이 뭔지는 모르겠으나 number인듯 싶습니다.

첫번째 쿼리는 where절에 문자열로 입력받고

두번째 쿼리는 where절에 ''없이 입력받고 있습니다. (number 타입일 경우 숫자로 인식)

 


by ximplecode [2014.11.28 17:55:00]

VARCHAR2 타입입니다... ㅠ.ㅠ


by 신이만든짝퉁 [2014.11.28 18:01:40]

그렇다면 입력받은 변수와 실제 입력한 데이터를 아래 함수를 이용해 동일한 값인지 비교해부세요.

 

SELECT UTL_RAW.CAST_TO_RAW('문자열') FROM DUAL;


by ximplecode [2014.11.28 18:14:40]

웃..모르던 문법이~~ +_+

RESULT1 : [38313538383134303530313032]
RESULT2 : [38313538383134303530313032]

그래도..결과는 아래와 같이 동일하네요!!  ㅠ.ㅠ 같은 값인데.. 감사합니다!


by jkson [2014.11.28 17:59:41]

XTEST 값을 100으로 해놓고 쿼리 실행해도 0 값이 나오는지 보시구요.

그래도 0 값이 나왔다면.. 이상하네요.

혹시 TEST_TB 테이블에 ORI_PRE_NO 컬럼이 있는 건 아니겠죠?

그럴 리는 없겠지요..ㅎㅎ;


by ximplecode [2014.11.28 18:06:43]

ㅎㅎ말씀해주신 부분도 해봤었는데.. 동일한 현상입니다.

이걸 우째해결해야할까요? ㅜ.ㅜ 으미..


by 마농 [2014.11.28 19:43:20]

jkson 님이 지적한데로 TEST_TB 테이블에 ORI_PRE_NO 컬럼이 있을 것 같은데요?

변수명은 컬럼명과 다르게 구별해서 지어주세요.

변수라 생각하고 사용한 것이 실제로는 변수가 아닌 컬럼으로 인식 될 수 있습니다.


by ximplecode [2014.12.11 10:43:11]

아.. 감사 답변이 늦었네요.

말씀해주신대로. 변수명과 컬럼명이 같아서 발생하는 문제였네요.

 

jkson 님의

--> 혹시 TEST_TB 테이블에 ORI_PRE_NO 컬럼이 있는 건 아니겠죠?

--> 그럴 리는 없겠지요..ㅎㅎ;

 

모든 문제에는 이유가 있는 법이네요.ㅠ.ㅠ 

답변들 감사드립니다.

좋은 하루 보내시길 바래요~ :)

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