cci_get_result_info

설명

prepared statement가 SELECT일 경우, 이 함수를 이용하여 실행 결과에 대한 컬럼 정보가 저장되어 있는 T_CCI_COL_INFO 구조체를 가져올 수 있다. SELECT 질의가 아닌 경우, NULL을 반환하고 num 값은 0이 된다.

T_CCI_COL_INFO 구조체에서 컬럼 정보를 가져오기 위해서 구조체에 직접 접근해도 되지만, 다음과 같이 정의된 매크로를 이용하여 정보를 가져올 수 있다. 각 매크로의 인자로 T_CCI_COL_INFO 구조체의 주소와 컬럼 인덱스가 지정되며, 매크로는 SELECT 질의에 대해서만 호출할 수 있다. 매크로에서 입력받는 각 인자에 대한 유효성 검사가 이루어지지 않으므로 주의한다. 매크로 리턴 값의 타입이 char*인 경우 메모리 포인터를 해제(free)하지 않아야 한다.

매크로

리턴 값 타입

의미

CCI_GET_RESULT_INFO_TYPE

T_CCI_U_TYPE

컬럼의 type

CCI_GET_RESULT_INFO_SCALE

short

컬럼의 scale

CCI_GET_RESULT_INFO_PRECISION

int

컬럼의 precision

CCI_GET_RESULT_INFO_NAME

char*

컬럼의 이름

CCI_GET_RESULT_INFO_ATTR_NAME

char*

컬럼의 속성 이름

CCI_GET_RESULT_INFO_CLASS_NAME

char*

컬럼의 클래스 이름

CCI_GET_RESULT_INFO_IN_NON_NULL

char (0 or 1)

컬럼이 NULL인지 여부

구문

T_CCI_COL_INFO* cci_get_result_info(int req_handle, T_CCI_SQLX_CMD *cmd_type, int *num)

리턴 값
예제

col_info = cci_get_result_info (req, &cmd_type, &col_count);

  if (col_info == NULL)

    {

      printf ("get_result_info error: %d, %s\n", cci_error.err_code,

              cci_error.err_msg);

      goto handle_error;

    }

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

    {

      printf ("%-12s = %d\n", "type", CCI_GET_RESULT_INFO_TYPE (col_info, i));

      printf ("%-12s = %d\n", "scale",

              CCI_GET_RESULT_INFO_SCALE (col_info, i));

      printf ("%-12s = %d\n", "precision",

              CCI_GET_RESULT_INFO_PRECISION (col_info, i));

      printf ("%-12s = %s\n", "name", CCI_GET_RESULT_INFO_NAME (col_info, i));

      printf ("%-12s = %s\n", "attr_name",

              CCI_GET_RESULT_INFO_ATTR_NAME (col_info, i));

      printf ("%-12s = %s\n", "class_name",

              CCI_GET_RESULT_INFO_CLASS_NAME (col_info, i));

      printf ("%-12s = %s\n", "is_non_null",

              CCI_GET_RESULT_INFO_IS_NON_NULL (col_info,i) ? "true" : "false");