리눅스에서 큐브리드 사용하는데 초기 컴파일 환경잡고 테이블 insert하려는데 에러가 나네요.
숫자형은 별도의 문자열에 저장후 작업해야된다고 해서 다음과 같이 작업했습니다.
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR user_id[16];
VARCHAR user_name[40];
DB_VALUE test_numeric_col;
EXEC SQL END DECLARE SECTION;
char numeric_buf[40];
uci_startup("testdbcon");
EXEC SQL whenever sqlerror call sql_error;
EXEC SQL CONNECT 'supream' identified by 'dba' with 'data1234';
strcpy(user_id.array, "Hong");
user_id.length = strlen(user_id.array);
strcpy(user_name.array, "홍길동");
user_name.length = strlen(user_name.array);
strcpy(numeric_buf, "123456.4321");
db_value_domain_init(&test_numeric_col, DB_TYPE_NUMERIC, 15, 4);
db_value_put(&test_numeric_col, DB_TYPE_C_VARCHAR, (void *)numeric_buf, strlen(numeric_buf));
EXEC SQL insert into oms_user(user_id,user_name, test_numeric_col)
values(:user_id, :user_name, :test_numeric_col);
EXEC SQL commit work;
EXEC SQL disconnect;
이걸 실행하면 다음 에러메세지가 납니다.
TestCubridInput.ec: In function 'int main()':
TestCubridInput.ec:55: error: invalid conversion from 'int' to 'DB_TYPE_C'
TestCubridInput.ec:55: error: initializing argument 5 of 'void uci_put_value(DB_INDICATOR*, DB_TYPE, int, int, DB_TYPE_C, void*, int)'
샘플에 있는거 그대로 같다 했는데 numeric형을 Insert하려니까 에러가 나네요...
참고로 numeric형을 제외한 string형만 Insert했을때는 제대로 돌아갔습니다.
그리고 숫자형(실수형이나 정수형)를 다루려면 문자열변환해서 하는 작업 말고는 바로 입력하는 방법은 있는지요?
제가 테스트한 환경에서는 잘됩니다.
혹시 샘플문서를 그대로 하셔도 똑같으신지와 제품버전을 알려 주셨으면 합니다.
제품버전은 cubrid_rel 명령으로 확인이 가능합니다.