Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-16
제목 unsafe_null oracle precompiler option
unsafe_null은 oracle precompiler의 option이다.
fetch되는 column값중에 하나라도 null값이 있을 경우 오라클은 ora-1405
error를 발생시킨다.
그러나 table의 많은 부분이 not null로 되어 있지 않으므로 ora-1405
error는 precompile을 사용할때 많이 만나게 되는 error이다.
전에는 이 error의 해결방법으로 indicator변수를 사용하는 것과 dbms=v6
option을 사용했었다. 그러나 dbms option은 변경할경우 character변수의
처리 방식이 바뀌게 되어 프로그램은 수정해야 하는 문제가 있었다.
7.3부터는 unsafe_null 이라는 option이 생겨서 ora-1405 error를 처리하게
되었다.
이 option을 사용하게 되면 character처리에 아무런 영향을 주지 않고
ora-1405 error를 처리할수 있다. 그러마 embedded pl/sql내의 host
variable에는 적용이 안되므로 이경우는 indicator변수를 사용해야 한다.

<>
precompiler 8.x 에서 unsafe_null은 dbms=v7 또는 v8 을 사용하고
mode=oracle을 사용해야 한다.
만약 그렇지 않을 경우에는 다음과 같은 error를 만난다.
PCB-S-0004: UNSAFE_NULL=YES must be used with DBMS=V7 or V8 and
MODE=ORACLE

그러므로
proc iname=sample1 unsafe_null=yes

위와 같은 명령어를 주었을 때에 이런 error가 발생할수 있는데 이것은
oracle 8.x 에서 precmpile option중에 dbms의 기본값이 native이기 때문이다.
이값이 주어 졌을 경우 이론적으로 application을 connect 되는 database 를
v6로 여기기 때문에 위와 같은 error가 생길수 있다.
그러므로
proc iname=sample1 unsafe_null=yes dbms=v7(or v8) mode=oracle
로 precompile을 해 주어야 한다.
Comment
등록된 코멘트가 없습니다.