오라클 데이터 타입중 숫자타입은 NUMBER 를 사용한다.
<열 이름> NUMBER ( 정확도, [,스케일] )
NUMBER - 정확도나 스케일을 지정하지 않으면 NUMBER(38) 이다.
NUMBER(9,2) - 9개의 숫자길이를 가지며 소수점 이후 2개의 숫자 길이를 가지는 숫자타입.
예를들어 1, 123456, 123456.89등이 있으며 12345678은 포함하지 않음.
NUMBER(4,10) - 매우 작은 수 표현
다음과 같은 정보를 가진상태에서 Message 를 통해 데이터를 주고 받는경우를 생각해보자.
Business Framework 인 ProFrame 과의 연동을 생각해볼 때
C 언어의 long, float, double 무엇을 사용하든 정확하게 NUMBER 타입에서 값을 저장하여 Message 로 생성하기 위해서는 +2 개의 자리수를 잡아야 하는데
Sign(+/-) 기호를 저장하기 위한 1Byte
Point(소수점.) 기호를 저장하기 위한 1Byte 가 그것이다.
Number(10.5) 라는 DB 타입이 있다면 즉 ProFrame 에서는 Number (10.5)[PfmNumber 타입으로 생성됨]를 사용하던가 double 10 + 2 . 즉 double 12 자리를 확보해놓아야한다.
Number(10.5) -12345.67891 == Double 12
Structure 와 Message 간의 정확도를 높이기 위해서는 다음과 같은 작업이 필수가 되야한다.
물론 자리수가 꽉차지 않는다는 100% 보장만 있다면 저런작업은 하지 않아도 되겠지만.
참고
Structure -> Message 로 변경하는 작업을 Marshalling 이라 함.
Message -> Structure 로 변경하는 작업을 UnMarshalling 이라 함.
'TmaxSoft.티맥스소프트 > ProFrame.FrameWork' 카테고리의 다른 글
ProFrame4.0 - DBIO 저장시 Marshal Null 에러 (0) | 2009.04.17 |
---|---|
ORA-00932 inconsistent datatypes: expected string got string (0) | 2009.02.27 |
Utility Wrapping 에 대한 고찰 (0) | 2008.10.01 |