ORA - 1403 추출할 데이터가 없거나 갱신할 데이터가 없어서 발생함
ORA - 0001 중복된 데이터가 입력되어 발생
ORA - 1555 SELECT 중 읽고 있는 롤백 세그먼트의 이미지 클리어
등 대부분의 경우는 쉽게 해결이 가능하다.
하지만
ORA - 1405 의 경우에는 다른 특징이 있음
추출된 데이터에 NULL 이 있을 경우 발생
-> DB의 NULL과 0X00 같은 것이아님
데이터의 처리에 있어 정의할 수 있는 값이 없기 때문에 발생
해결방법
1. 프로그램에 의한 해결방법
EXEC SQL DECLARE EMP CURSOR FOR
SELECT NVL(empno,0), NVL(ename,'-')
FROM scott.emp;
NULL 데이터는 NVL 함수에 기술된 대로 치환되어 추출돈다.
윈칙적으로 NULL 이 추출되지 않기 때문에 해결할 수 있음
하지만 모든 데이터에 대해 검사하기 때문에 성능저하가 발생함
-> 2번방법을 더 많이 사용함
2. 컴파일러 옵션의 변경을 통한 방법
proc iname=1.pc unsafe_null=yes dbms=v8
unsafe_null 옵션과 dbms 옵션을 추가하면 NVL함수를 사용하지 않도고 데이터 추출 오류를 없앨 수 있음
galbage 데이터처리
테이블 다음 행이 NULL 인 경우
다음행을 추출해야하는데 이떄 다음 데이터가 NULL 이기 때문에
앞서 추출한 데이터 값을 저장하는 변수에서 클리어되지 않은 상황에
같은 데이터가 두 번 나올 수 있음
해결 1. NVL 함수 사용
해결 2. memset 함수로 FETCH 전에 변수 초기화
'Pro*C' 카테고리의 다른 글
[Pro*C 오라클 DB] Dynamic SQL 프로그램, SQL 동적처리 (1) | 2025.01.20 |
---|---|
[Pro*C 오라클 DB] 호스트 변수 (배열, 구조체)를 이용한 프로그램 (1) | 2025.01.16 |
[Pro*C 오라클 DB] Pro*C 컴파일 (0) | 2025.01.09 |
[Pro*C 오라클 DB] Pro*C 프로그램 구성과 DB접속 (0) | 2025.01.08 |
[Pro*C 오라클 DB] Pro*C 오류,에러 진단과 처리 (1) | 2025.01.06 |