현재 fetch된 결과에 대해서 col_no 번째의 값을 가져온다. 주어진 type 인자에 따라 value 변수의 타입이 결정되고, 이에 따라 value 변수로 값 또는 포인터가 복사된다.
값을 복사하는 경우 value 변수로 전달되는 주소에 대한 메모리가 할당되어 있어야 한다. 포인터 복사의 경우 응용 클라이언트 라이브러리 내의 포인터를 반환하는 것이므로, 다음 cci_get_data() 함수 호출 시 해당 값이 유효하지 않게 되므로 주의한다.
포인터 복사에 의해 반환된 포인터는 해제(free)하면 안 된다. 단, 타입이 CCI_A_TYPE_SET인 경우 T_CCI_SET 타입의 set 포인터를 메모리에 할당한 후 이를 반환하므로, set 포인터를 사용한 후에는 cci_set_free() 함수를 이용하여 할당된 메모리를 해제해야 한다. 아래는 type 인자와 그에 대응하는 value의 데이터 타입을 정리한 표이다.
type |
value 타입 |
의미 |
---|---|---|
CCI_A_TYPE_STR |
char** |
pointer copy |
CCI_A_TYPE_INT |
int* |
value copy |
CCI_A_TYPE_FLOAT |
float* |
value copy |
CCI_A_TYPE_DOUBLE |
double* |
value copy |
CCI_A_TYPE_BIT |
T_CCI_BIT* |
value copy (pointer copy for each member) |
CCI_A_TYPE_SET |
T_CCI_SET* |
memory alloc and value copy |
CCI_A_TYPE_DATE |
T_CCI_DATE* |
value copy |
CCI_A_TYPE_BIGINT |
int64_t* (Windows는 __int64*) |
value copy |
int cci_get_data(int req_handle, int col_no, int type, void *value, int *indicator)