현상 : 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를 발생한다.
'▶ Tuxedo > 오류 메시지(Oracle)' 카테고리의 다른 글
ORA-01480: trailing null missing from STR bind value (0) | 2010.07.05 |
---|---|
ORA-01476: divisor is equal to zero (0) | 2010.07.05 |
ORA-1453 SET TRANSACTION must be first statement of transaction (0) | 2010.07.05 |
ORA-1452 cannot CREATE UNIQUE INDEX; duplicate keys found (0) | 2010.07.05 |
ORA-1449 column contains NULL values; cannot alter to NOT NULL (0) | 2010.07.05 |