pro*C 에서 자료형 NUMBER(15) 인 데이타 검색할 경우 호스트 변

black0328의 이미지

DB 의 자료형이 NUMBER(15) 인 경우

호스트 변수를 이렇게 int 형으로 선언하고

EXEC SQL BEGIN DECLARE SECTION;

int quota_value;

EXEC SQL END DECLARE SECTION;

EXEC SQL SELECT quota INTO : quota_values FROM QUOTA 를 실행시켰더니

에러가 발생하였습니다. ( double 형도 마찬가지 에러 발생 )

ORA-01455: converting column overflows integer datatype

호스트 변수를

char quota_value[ 100 ];

으로 선언하고 실행시켰더니 제대로 값이 잘나오더라구요...

혹시 오라클에서 호스트 변수 데이타 형으로 unsigned long long ( 64bit 의 8byte ) 은 존재하지 않는지 알고 싶습니다.

만약 존재 하지 않는다면 char 형으로 변환하지 않고 다른 방법이 있는지 알고 싶습니다.

seoleda의 이미지

black0328 wrote:

혹시 오라클에서 호스트 변수 데이타 형으로 unsigned long long ( 64bit 의 8byte ) 은 존재하지 않는지 알고 싶습니다.

만약 존재 하지 않는다면 char 형으로 변환하지 않고 다른 방법이 있는지 알고 싶습니다.

64비트 정수형이 존재하긴 합니다.

제가 Pro*C를 해보지 않아서 뭐라고 확답드리긴 곤란하지만 제가 아는선에서

말씀 드리죠. ^^

리눅스일 경우에는 long long int big; 이렇게 선언해서 사용하고,

OS 가 윈도우일 경우에는 __int64 bign; 로 선언하면 됍니다.

근데 C 라이브러는 64비트 정수형이 제데로 지원이 안되는듯 합니다.

출력하실 때는

리눅스에서는 printf("%lld", big); 이렇게 앞에 ll을 붙여줘야 제데로 출력되고

윈도우에서는 printf("%I64d", big); 이런식으로 출력을 해야 합니다.

그런데 포맷 스트링의 형식은 표준이 명확하지 않은건가요? 아님

64비트 정수형이 표준에 없는 건가요?

대개 다른 포맷은 윈도우나 리눅스나 같은데 유독 64 비트 정수형만 다른게

이상합니다. ^^

그럼 도움이 돼셨길 바랍니다.