cci_execute
설명
cci_prepare()를 수행한 SQL 문(prepared statement)을 실행한다. 이 함수의 인자로 요청 핸들, flag, fetch하는 컬럼의 문자열 최대 길이, 오류 정보를 담을 T_CCI_ERROR 구조체 변수의 주소가 지정된다.
flag를 통해 서버로부터 질의 결과를 가져오는 방식을 동기식 또는 비동기식으로 설정할 수 있다. flag를 CCI_EXEC_QUERY_ALL로 설정하면 prepared statement를 실행한 후 질의 결과를 한번에 가져오는 동기 방식 (sync_mode)으로 설정되며, CCI_EXEC_ASYNC로 설정하면 질의 결과가 생성될 때마다 즉시 결과를 가져오는 비동기 방식(async_mode)으로 설정된다. 디폴트로 설정된 flag는 CCI_EXEC_QUERY_ALL이며, 이 경우 다음의 규칙이 적용된다.
- 리턴 값은 첫 번째 질의에 대한 결과이다.
- 어느 하나의 질의에서 에러가 발생할 경우 execute는 실패한 것으로 처리된다.
- q1; q2; q3와 같이 구성된 질의에 대해서 q1을 성공하고 q2에서 에러가 난 경우 q1의 수행 결과는 유효하다. 즉, 에러가 발생했을 때 이전에 성공한 질의 수행에 대해서 롤백하지 않는다.
- 질의가 성공적으로 수행된 경우 두 번째 질의에 대한 결과는 cci_next_result를 통해서 얻을 수 있다.
max_col_size는 prepared statement의 컬럼이 CHAR, VARCHAR, NCHAR, VARNCHAR, BIT, VARBIT일 경우 클라이언트로 전송되는 컬럼의 문자열 최대 길이를 결정하기 위한 값이며, 이 값이 0이면 전체 길이를 fetch한다.
구문
int cci_execute(int req_handle, char flag, int max_col_size, T_CCI_ERROR *err_buf)
- req_handle : (IN) prepared statement의 요청 핸들
- flag : (IN) exec flag (CCI_EXEC_ASYNC 또는 CCI_EXEC_QUERY_ALL)
- max_col_size : (IN) 문자열 타입인 경우 fetch하는 컬럼의 문자열 최대 길이(단위: 바이트). 이 값이 0이면 전체 길이를 fetch한다.
- err_buf : (OUT) 데이터베이스 에러 버퍼
리턴 값
- 성공
- SELECT : sync mode인 경우 결과 행의 개수를 반환. async mode인 경우 0을 반환.
- INSERT, UPDATE : 반영된 행의 개수
- 기타 질의 : 0
- 실패 : 에러 코드
에러 코드
- CCI_ER_REQ_HANDLE
- CCI_ER_BIND
- CCI_ER_DBMS
- CCI_ER_COMMUNICATION
- CCI_ER_QUERY_TIMEOUT
- CCI_ER_LOGIN_TIMEOUT