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_batch

설명

CCI에서 INSERT/UPDATE/DELETE와 같은 DML 질의를 사용하는 경우에는 여러 작업을 한번에 처리할 수 있는데, 이러한 배치 작업을 위해서 cci_execute_array() 함수와 cci_execute_batch() 함수가 이용될 수 있다. 단, cci_execute_batch() 함수에서는 prepared statement를 사용할 수 없다.

인자로 지정된 num_sql_stmt 개의 sql_stmt를 수행하며, query_result 변수로 수행된 질의 개수를 반환한다. 실행 결과에 대한 정보를 얻기 위해서는 cci_execute_array() 함수에서 사용할 수 있는 매크로(CCI_QUERY_RESULT_RESULT, CCI_QUERY_RESULT_ERR_MSG, CCI_QUERY_RESULT_STMT_TYPE)를 이용할 수 있다. 매크로에서 입력받는 각 인자에 대한 유효성 검사가 이루어지지 않으므로 주의한다. query_result 변수의 사용이 끝나면 cci_query_result_free 함수를 이용하여 질의 결과를 삭제해야 한다.

구문

int cci_execute_batch(int conn_handle, int num_sql_stmt, char **sql_stmt, T_CCI_QUERY_RESULT **query_result, T_CCI_ERROR *err_buf)

  • conn_handle : (IN) 연결 핸들
  • num_sql_stmt : (IN) sql_stmt의 개수
  • sql_stmt : (IN) SQL 문 array
  • query_result : (OUT) sql_stmt의 결과
  • err_buf : (OUT) 데이터베이스 에러 버퍼
리턴 값
  • 성공: 수행된 질의의 개수
  • 실패: 에러 코드
에러 코드
  • CCI_ER_CON_HANDLE
  • CCI_ER_DBMS
  • CCI_ER_COMMUNICATION
  • CCI_ER_NO_MORE_MEMORY
  • CCI_ER_CONNECT
  • CCI_ER_QUERY_TIMEOUT
  • CCI_ER_LOGIN_TIMEOUT
예제

char **queries;

  T_CCI_QUERY_RESULT *result;

  int n_queries, n_executed;

...

 

  count = 3;

  queries = (char **) malloc (count * sizeof (char *));

  queries[0] =

    "insert into athlete(name, gender, nation_code, event) values('Ji-sung Park', 'M', 'KOR', 'Soccer')";

  queries[1] =

    "insert into athlete(name, gender, nation_code, event) values('Joo-young Park', 'M', 'KOR', 'Soccer')";

  queries[2] =

    "select * from athlete order by code desc for orderby_num() < 3";

//calling cci_execute_batch()

  n_executed = cci_execute_batch (con, count, queries, &result, &cci_error);

  if (n_executed < 0)

    {

      printf ("execute_batch: %d, %s ", cci_error.err_code,

              cci_error.err_msg);

      goto handle_error;

    }

  printf ("%d statements were executed. ", n_executed);

 

  for (i = 1; i <= n_executed; i++)

    {

      printf ("query %d ", i);

      printf ("result count = %d ", CCI_QUERY_RESULT_RESULT (result, i));

      printf ("error message = %s ", CCI_QUERY_RESULT_ERR_MSG (result, i));

      printf ("statement type = %d ",

              CCI_QUERY_RESULT_STMT_TYPE (result, i));

    }

 

  error = cci_query_result_free (result, n_executed);

  if (error < 0)                                                                                                                            

    {                                                                                                                                       

      printf ("query_result_free: %d ", error);   

      goto handle_error;

    }