C와 Oracle을 연동할때 Data길이를 어떻게 정하는지..
글쓴이: thisnome / 작성시간: 금, 2003/11/21 - 1:36오후
C -> Pro*C -> Oracle data
위에서 처럼 연동을 하게 되는데요..
문제는..
Data값의 최대 길이가 문자열로 16바이트라고 한다면, Oracle에서는 16자리로 넣고 (varchar2 (16)), C에서는 문자열 마지막의 Null을 포함해서 char[17] 로 잡을텐데, 중간 어디쯤에서 그걸 16으로 바꿔줄지가 의문입니다.
Pro*C에서
char c_data[17]; /* c로부터 입력받은 data */ EXEC SQL BEGIN DECLARE SECTION; VARCHAR proc_data[16]; EXEC SQL END DECLARE SECTION; strncpy((char *) proc_data.arr, c_data, 16); proc_data.len = (unsigned short) strlen((char *)proc_data.arr);
위의 코드처럼 c에서 받은 c_data[17]을 proc_data[16]에 카피를 하는 경우 strncpy 에서는 넘어가더라도 strlen()에서 문제가 발생할 소지가 있기 때문에 이렇게 짜면 안될것 같구요..
그렇다면 Pro*C에서도 proc_data의 크기를 17로 잡아주어야 하는건지..
DB에서의 data 크기를 varchar2 (17)로 잡는것이 좋은지..
"정석적인 플레이" 를 알고 싶습니다.
Forums:
Re: C와 Oracle을 연동할때 Data길이를 어떻게 정하는지..
varchar2 를 17로 잡으세요.
그러면 문제가 없습니다.
님이 코딩한것에서는
proc_data.len = (unsigned short) strlen(c_data);
로 하세요.
그러나.. varchar2에서 16으로 잡고한다는것은.. 스트링처리를 할수 없음으로
항상 메모리 자릿수를 생각하면서 해야합니다. 골치아프죠..
----------------------------------------------------------------------------
댓글 달기