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은 데이터베이스의 컬럼 타입으로, value 인자를 통해 바인딩된 데이터를 이 타입으로 변환한다. cci_bind_param() 함수는 C 언어가 이해하는 A 타입의 데이터를 데이터베이스가 이해할 수 있는 U 타입의 데이터로 변환하기 위한 정보를 전달하기 위해서 두 가지 타입을 사용한다.

U 타입이 허용하는 A 타입은 여러 가지이다. 예를 들어 CCI_U_TYPE_INTCCI_A_TYPE_INT 외에 CCI_A_TYPE_STR도 A 타입으로 받을 수 있다. 타입 변환은 "CUBRID SQL 설명서 > 데이터 타입 > 묵시적 타입 변환 > 규칙"을 따른다.

T_CCI_A_TYPET_CCI_U_TYPE enum은 모두 cas_cci.h 파일에 정의되어 있다. 각 타입에 대한 식별자 정의는 아래 표를 참고한다.

u_type

대응되는 기본 a_type

CCI_U_TYPE_CHAR

CCI_A_TYPE_STR

CCI_U_TYPE_STRING

CCI_A_TYPE_STR

CCI_U_TYPE_NCHAR

CCI_A_TYPE_STR

CCI_U_TYPE_VARNCHAR

CCI_A_TYPE_STR

CCI_U_TYPE_BIT

CCI_A_TYPE_BIT

CCI_U_TYPE_VARBIT

CCI_A_TYPE_BIT

CCI_U_TYPE_NUMERIC

CCI_A_TYPE_STR

CCI_U_TYPE_INT

CCI_A_TYPE_INT

CCI_U_TYPE_SHORT

CCI_A_TYPE_INT

CCI_U_TYPE_MONETARY

CCI_A_TYPE_DOUBLE

CCI_U_TYPE_FLOAT

CCI_A_TYPE_FLOAT

CCI_U_TYPE_DOUBLE

CCI_A_TYPE_DOUBLE

CCI_U_TYPE_DATE

CCI_A_TYPE_DATE

CCI_U_TYPE_TIME

CCI_A_TYPE_DATE

CCI_U_TYPE_TIMESTAMP

CCI_A_TYPE_DATE

CCI_U_TYPE_OBJECT

CCI_A_TYPE_STR

CCI_U_TYPE_BIGINT

CCI_A_TYPE_BIGINT

CCI_U_TYPE_DATETIME

CCI_A_TYPE_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)

리턴 값
에러 코드