주식회사 누리아이티

정보자산의 보안강화를 위한 다계층 인증SW (BaroPAM) 전문기업.

▶ Tuxedo/오류 메시지(Oracle)

ORA-01458 Invalid length inside variable character string

누리아이티 2010. 7. 5. 14:59

현상 : ORA-01458 Invalid length inside variable character string
 

원인 : DB Table field의 길이와 Host Variable의 길이 차이가 있을때 발생한다.
         그러므로 Table field의 길이와 Host Variable의 길이를 비교해 본다. 혹은 Stored
         Procedure의 Input Parameter가 Null 값으로 넘겨질 때도 발생한다.
 

조치 : DB Table field와 Host Variable의 길이를 조정한다.
         Stored Procedure의 Input Parameter에 Null값을 0의 값을 채워서 넘긴다.
 

주의 : Stored Procedure에서 Cursor를 사용할 때
         FOR ... LOOP를 사용할 때 주의를 해야한다.
         FOR i   IN  1..batch_size   LOOP
             FETCH   get_emp
                 INTO
                     emp_name( i )
                    ,job( i )
                    ,sql( i )
             ;

             IF  get_emp%NOTFOUND     THEN       -- if no row was found
                 CLOSE  get_emp;
                 done_fetch := 100;              -- indicate all none
                 EXIT;
             ELSE
                 done_fetch := 900;              -- indicate all none
                 found      := found + 1;        -- count row
             END IF;
         END LOOP;
         에서 Fetch Array의 0번째에 Data를 저장할 때 문제가 생긴다.
         그러므로, emp_name( 0 )이라고 하면 Error를 발생한다.