Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 

cci_execute

설명

cci_prepare()를 수행한 SQL 문(prepared statement)을 실행한다. 이 함수의 인자로 요청 핸들, flag, fetch하는 칼럼의 문자열 최대 길이, 오류 정보를 담을 T_CCI_ERROR 구조체 변수의 주소가 지정된다.

flag를 통해 서버로부터 질의 결과를 가져오는 방식을 동기식 또는 비동기식으로 설정 가능하며, 질의문 수행 방식을 모든 질의문 또는 첫 번째 질의문으로 지정할 수 있다.

flagCCI_EXEC_ASYNC를 설정하면 질의 결과가 생성될 때마다 즉시 결과를 가져오는 비동기 방식으로 동작하며, 그렇지 않으면 질의 결과가 모두 생성된 뒤에 결과를 가져오는 동기 방식으로 동작한다.

flagCCI_EXEC_QUERY_ALL를 설정하면 prepare 시에 전달된 여러 개의 질의문(세미콜론으로 여러 개의 질의문을 구분)을 모두 수행하며, 그렇지 않은 경우 제일 앞에 있는 질의문만 수행한다.

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