cci_bind_param

설명

prepared statement에서 bind 변수에 데이터를 바인딩하기 위하여 사용되는 함수이다. 이때, 주어진 a_typevalue의 값을 실제 바인딩되어야 하는 타입으로 변환하여 저장한다. 이후, cci_execute()가 호출될 때 저장된 데이터가 서버로 전송된다. 같은 index에 대해서 여러 번 cci_bind_param()을 호출할 경우 마지막으로 설정한 값이 유효하다.

데이터베이스에 NULL을 바인딩할 경우 다음의 두 가지 형태를 가질 수 있다.

flagCCI_BIND_PTR이 설정되어 있을 경우 value 변수의 포인터만 복사하고(shallow copy) 값은 복사하지 않는다. flag가 설정되지 않는 경우 메모리를 할당하여 value 변수의 값을 복사(deep copy)한다. 만약 같은 메모리 버퍼를 이용하여 여러 개의 컬럼을 바인딩할 경우라면, CCI_BIND_PTR flag를 설정하지 않아야 한다.

T_CCI_A_TYPE은 CCI 응용 프로그램 내에서 사용되는 C 언어의 타입을 의미하며, int, float 등의 primitive 타입과 T_CCI_BIT, T_CCI_DATE 등의 CCI 가 정의한 user-defined 타입으로 구성된다. 각 타입에 대한 식별자는 아래의 표와 같이 정의되어 있다.

a_type

value 타입

CCI_A_TYPE_STR

char**

CCI_A_TYPE_INT

int*

CCI_A_TYPE_FLOAT

float*

CCI_A_TYPE_DOUBLE

double*

CCI_A_TYPE_BIT

T_CCI_BIT*

CCI_A_TYPE_SET

T_CCI_SET*

CCI_A_TYPE_DATE

T_CCI_DATE*

CCI_A_TYPE_BIGINT

int64_t*
(Windows는 __int64*)

CCI_A_TYPE_BLOB

T_CCI_BLOB

CCI_A_TYPE_CLOB

T_CCI_CLOB

또한, T_CCI_U_TYPE은 CUBRID 데이터베이스에서 지원하는 타입을 의미하며, 각 타입에 대한 식별자 정의는 아래 표를 참고한다. cci_bind_param() 함수에서 이 두 타입이 사용되는 이유는 C 언어가 이해하는 A 타입의 데이터를 데이터베이스가 이해할 수 있는 U 타입의 데이터로 변환하기 위한 정보를 전달하기 위해서이다. T_CCI_A_TYPET_CCI_U_TYPE enum은 모두 cas_cci.h 파일에 정의되어 있다.

u_type

value 타입

CCI_U_TYPE_CHAR

char**

CCI_U_TYPE_STRING

char**

CCI_U_TYPE_NCHAR

char**

CCI_U_TYPE_VARNCHAR

char**

CCI_U_TYPE_BIT

T_CCI_BIT*

CCI_U_TYPE_VARBIT

T_CCI_BIT*

CCI_U_TYPE_NUMERIC

char**

CCI_U_TYPE_INT

int*

CCI_U_TYPE_SHORT

int*

CCI_U_TYPE_MONETARY

Double*

CCI_U_TYPE_FLOAT

float*

CCI_U_TYPE_DOUBLE

Double*

CCI_U_TYPE_DATE

T_CCI_DATE*

CCI_U_TYPE_TIME

T_CCI_DATE*

CCI_U_TYPE_TIMESTAMP

T_CCI_DATE*

CCI_U_TYPE_OBJECT

char**

CCI_U_TYPE_BIGINT

int64_t*
(Windows는 __int64*)

CCI_U_TYPE_DATETIME

T_CCI_DATE*

구문

int cci_bind_param(int req_handle, int index, T_CCI_A_TYPE a_type, void *value, T_CCI_U_TYPE u_type, char flag)

리턴 값
에러 코드