콘텐츠로 이동

3. ACI 함수#

이 장은 Altibase C 인터페이스 함수들 중 연결 핸들인 ALTIBASE 핸들을 사용하는 함수들의 명세를 기술한다. 각 ACI 함수 별로 다음의 정보가 제공된다.

  • 함수명: 사용 목적

  • 구문: 이 함수의 C 언어 프로토타입

  • 인자: 함수의 각 인자별 자료 유형, 입/출력, 부연 설명

  • 반환 값: 반환 가능한 이 함수의 리턴 값

  • 설명: 함수 사용 방법 및 주의 사항

  • 관련 함수: 이 함수와 관련된 함수 리스트

  • 예제: 이 함수가 사용된 소스 코드의 일부

altibase_affected_rows()#

바로 이전에 실행한 UPDATE, DELETE 또는 INSERT 문에 의해 영향을 받은 레코드의 수를 구하는 함수이다.

구문#

ALTIBASE_LONG  altibase_affected_rows (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

반환 값 설명
0 보다 큰 값 SQL 문에 의해 영향을 받은 레코드의 개수
0 SQL 문에 의해 영향을 받은 레코드가 없음
ALTIBASE_INVALID_AFFECTEDROW UPDATE, DELETE, 또는 INSERT 수행 중 에러 발생

설명#

이 함수는 마지막으로 수행한 SQL 문의 종류에 따라 다음과 같은 값을 반환한다:

  • UPDATE 문: 변경된 레코드 수

  • DELETE 문: 삭제된 레코드 수

  • INSERT 문: 추가된 레코드 수

만약 마지막으로 수행한 SQL 문이 SELECT 문이었다면 이 함수는 0을 반환할 것이다. SELECT 문에 의해 선택된 레코드의 개수를 얻고자 할 때는 altibase_num_rows()를 사용해야 한다.

예제#

#define QSTR "UPDATE employees SET salary = salary * 1.1 WHERE group = 1"

rc = altibase_query(altibase, QSTR);
/* ... check return value ... */

printf("%ld updated\n", altibase_affected_rows(altibase));

altibase_client_version()#

클라이언트 라이브러리의 버전을 구하는 함수이다.

구문#

int  altibase_client_version( void );

반환 값#

클라이언트 라이브러리 버전을 나타내는 상수가 반환된다.

설명#

이 함수는 클라이언트 라이브러리의 버전을 나타내는 상수를 반환한다. 반환 값의 형식은 MMmmttSSpp이며 각각의 의미는 다음과 같다.

형식 설명 비고
MM 주버전
mm 부버전 버전의 자리수가 2보다 작을 경우, 나머지 자리는 0으로 채워서 반환된다.
tt 버전의 자리수가 2보다 작을 경우, 나머지 자리는 0으로 채워서 반환된다.
SS 패치 셋 버전의 자리수가 2보다 작을 경우, 나머지 자리는 0으로 채워서 반환된다.
pp 패치 버전의 자리수가 2보다 작을 경우, 나머지 자리는 0으로 채워서 반환된다.

예를 들어, 이 함수의 반환 값이 605010309이면 클라이언트 라이브러리의 버전은 7.1.0.3.9이다.

altibase_client_verstr()#

클라이언트 라이브러리의 버전을 구하는 함수이다.

구문#

const char *  altibase_client_verstr ( void );

반환 값#

클라이언트 라이브러리 버전을 나타내는 문자열이 반환된다.

설명#

이 함수는 클라이언트 라이브러리의 버전을 나타내는 문자열을 반환한다. 반환 값의 형식은 x.x.x.x.x이며 순서대로 주버전, 부버전, 텀, 패치 셋, 패치를 의미한다.

이 함수가 반환한 char 포인터가 가리키는 메모리는 라이브러리 내부에서 관리되므로 절대로 사용자가 임의로 변경하거나 해제해서는 안 된다.

altibase_close()#

서버와의 연결을 닫는 함수이다.

구문#

int  altibase_close (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

함수 수행에 성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR이 반환된다.

설명#

이 함수는 서버와의 연결을 종료하고, 연결 핸들을 위해 할당된 모든 자원을 해제한다.

이 함수가 호출되면 인자로 전달되는 연결 핸들에 속한 모든 명령문 핸들 (ALTIBASE_STMT)에 관련된 SQL 문 처리가 중단되고 그 결과들은 폐기되며 이들 명령문 핸들과 관련된 모든 자원도 해제된다.

연결 핸들을 사용해서 반환 받은 결과 집합 핸들이 있다면, 이 함수를 실행하기 전에 반드시 altibase_free_result() 함수를 호출해서 결과 집합 핸들을 먼저 해제해야 한다.

예제#

altibase = altibase_init();
if (altibase == NULL)
{
    return 1;
}

/* ... omit ... */

rc = altibase_close(altibase);
/* ... check return value ... */

altibase_commit()#

이 함수는 현재 트랜잭션을 커밋한다.

구문#

int  altibase_commit (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

함수 수행에 성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR이 반환된다.

설명#

이 함수는 현재 연결된 세션에서 수행중인 트랜잭션을 커밋한다. 해당 세션이 AUTOCOMMIT 모드가 아닌 경우, 이 함수 수행 후 다음 SQL 문 실행시에 자동으로 새로운 트랜잭션이 시작된다

예제#

altibase_set_autocommit()의 예제를 참고하라.

altibase_connect()#

서버에 접속하는 함수이다.

구문#

int  altibase_connect (
    ALTIBASE      altibase,
    const char*   connstr );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들
const char* connstr 입력 연결 속성 문자열

반환 값#

함수 수행에 성공하면 ALTIBASE_SUCCESS이, 실패하면 ALTIBASE_ERROR이 반환된다.

설명#

이 함수는 사용자가 명시한 연결 속성을 사용하여 서버에 연결한다. 연결 속성에는 DSN, PORT_NO, UID, PWD, CONNTYPE, NLS_USE 등이 있다. 이에 대한 자세한 내용은 CLI User's Manual를 참고하기 바란다.

연결 속성 문자열은 반드시 NULL 종료 문자열이어야 한다.

예제#

#define CONNSTR "DSN=127.0.0.1;PORT_NO=20300;UID=sys;PWD=manager"

ALTIBASE altibase;

altibase = altibase_init();
/* ... check return value ... */

rc = altibase_set_option(altibase, ALTIBASE_APP_INFO, "your_app_name");
/* ... check return value ... */

rc = altibase_connect(altibase, CONNSTR);
if (ALTIBASE_NOT_SUCCEEDED(rc))
{
    fprintf(stderr, "Failed to connect : %s\n", altibase_error(altibase));
}

altibase_data_seek()#

질의 결과 집합에서 가져올 행의 위치를 지정하는 함수이다.

구문#

int  altibase_data_seek (
    ALTIBASE_RES    result,
    ALTIBASE_LONG   offset );

인자#

자료유형 인자 입/출력 설명
ALTIBASE_RES result 입력 결과 집합 핸들
ALTIBASE_LONG offset 입력 다음에 가져올 행의 위치 (0부터 시작)

반환 값#

함수 수행에 성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR이 반환된다.

설명#

이 함수는 결과 집합에서 다음에 가져올 행의 위치를 특정 위치로 이동시킨다. 위치로 지정하는 행 번호의 값은 0부터 (결과 집합의 행 개수 - 1) 까지의 값이어야 한다.

altibase_store_result() 호출 이후에만 이 함수를 실행할 수 있다.

예제#

#define QSTR "SELECT last_name, first_name FROM friends"

rc = altibase_query(altibase, QSTR);
/* ... check return value ... */

result = altibase_store_result(altibase);
/* ... check return value ... */

row_count = altibase_num_rows(result);
for (i = 0; i < row_count; i++)
{
    rc = altibase_data_seek(result, i);
    if (ALTIBASE_NOT_SUCCEEDED(rc))
    {
        printf("ERR : %d : ", i, altibase_error());
        continue;
    }

    /* ... omit ... */
}

rc = altibase_free_result(result);
/* ... check return value ... */

altibase_errno()#

바로 이전에 실행된 함수에서 발생한 오류의 에러 코드를 구하는 함수이다.

구문#

unsigned int  altibase_errno (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

바로 이전에 호출된 함수가 성공했으면 0, 실패했으면 에러 코드가 반환된다.

설명#

이 함수는 바로 이전에 실행된 함수가 실패했을 경우, 실패 원인을 알려주는 에러 코드를 반환한다.

바로 이전에 실행된 함수가 실패했더라도, 모든 함수에 대해서 에러 코드가 반환되지는 않는다. 직전에 수행된 함수가 주로 SQL 문 수행과 관련된 함수였을 경우에만 에러 코드가 생성된다. 에러 코드에 대한 자세한 내용은 Error Message Reference를 참고한다.

어떤 함수 수행시 오류가 발생한 경우 바로 오류를 확인하지 않고 다른 함수를 호출하면, 이 오류에 대한 정보가 사라진다. 따라서 오류 발생시 바로 이 함수를 사용해서 오류 정보를 확인해야 한다.

altibase_errno()가 반환하는 값은 Altibase 자체 정의 오류 코드로 ODBC표준 명세에 정의된 SQLSTATE과는 다르다. SQLSTATE를 얻으려면 altibase_sqlstate()를 사용해야 한다. 일반적으로 altibase_errno()의 반환 값을 확인해서 에러 처리 루틴을 작성하는 것을 권장하지 않는다.

예제#

rc = altibase_query(altibase, QSTR);
if (ALTIBASE_NOT_SUCCEEDED(rc))
{
    printf("error no  : %05X\n", altibase_errno(altibase));
    printf("error msg : %s\n", altibase_error(altibase));
    printf("sqlstate  : %s\n", altibase_sqlstate(altibase));
    return 1;
}

/* ... omit ... */

altibase_error()#

바로 이전에 실행된 함수에서 발생한 오류의 에러 메시지를 구하는 함수이다.

구문#

const char *  altibase_error (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

바로 이전에 호출된 함수가 성공했으면 빈 문자열이, 실패했으면 에러 메시지 문자열이 반환된다.

설명#

이 함수는 바로 이전에 실행된 함수가 실패했을 경우, 실패 원인을 알려주는 에러 메시지를 반환한다.

어떤 함수 수행시 오류가 발생한 경우 바로 오류를 확인하지 않고 다른 함수를 호출하면, 이 오류에 대한 정보가 사라진다. 따라서 오류 발생시 바로 이 함수를 사용해서 오류 정보를 확인해야 한다.

이 함수가 반환한 char 포인터가 가리키는 메모리는 라이브러리 내부에서 관리되므로 절대로 사용자가 임의로 변경하거나 해제해서는 안 된다.

예제#

altibase_errno()의 예제를 참고하라.

altibase_fetch_lengths()#

결과 집합에서 현재 행의 칼럼들의 길이를 반환한다.

구문#

ALTIBASE_LONG *  altibase_fetch_lengths (
    ALTIBASE_RES result );

인자#

자료유형 인자 입/출력 설명
ALTIBASE_RES result 입력 결과 집합 핸들

반환 값#

칼럼들의 크기를 담은 배열이 반환된다. 에러가 발생하면 NULL이 반환된다.

설명#

이 함수는 현재 행을 구성하고 있는 각 칼럼의 데이터 길이를 배열로 반환한다. 사용자는 이 함수의 반환 값을 이용해서 각 칼럼의 데이터를 담을 버퍼의 크기를 결정할 수 있다.

칼럼의 데이터가 문자열인 경우, NULL 종료 문자를 제외한 길이가 반환된다.

칼럼의 데이터가 NULL인 경우, 반환되는 길이는 ALTIBASE_NULL_DATA이다.

이 함수 호출 전에 반드시 결과 집합 핸들에 대해서 altibase_fetch_row() 함수가 한 번 이상 실행되어야 한다. altibase_fetch_row()를 실행하기 전이거나 결과 집합에 더 이상 반환될 행이 없는 경우에 이 함수는 NULL을 반환한다.

altibase_fetch_row()로 얻은 데이터에는 바이너리 데이터가 포함되어 있을 수 있기 때문에, strlen() 함수를 이용해서 데이터의 길이를 추정해서는 안 된다. 반드시 altibase_fetch_lengths() 함수를 사용해서 반환될 데이터의 길이를 확인해야 한다.

이 함수가 반환한 포인터가 가리키는 메모리는 라이브러리 내부에서 관리되므로 절대로 사용자가 임의로 변경하거나 해제해서는 안 된다.

예제#

ALTIBASE_LONG *lengths;
int            num_fields;
int            i;

/* ... omit ... */

num_fields = altibase_num_fields(result);
row = altibase_fetch_row(result);
if (row != NULL)
{
    lengths = altibase_fetch_lengths(result);
    for (i = 0; i < num_fields; i++)
    {
         printf("Column length %d : %ld\n", i, lengths[i]);
    }
}

/* ... omit ... */

altibase_fetch_row()#

결과 집합으로부터 한 행을 가져오는 함수이다.

구문#

ALTIBASE_ROW  altibase_fetch_row (
    ALTIBASE_RES result );

인자#

자료유형 인자 입/출력 설명
ALTIBASE_RES result 입력 결과 집합 핸들

반환 값#

한 행의 데이터가 배열로 반환된다. 결과 집합에 더 이상 행이 없거나 데이터를 가져오는 중에 오류가 발생한 경우 NULL이 반환된다.

설명#

이 함수는 결과 집합에서 다음 행의 데이터를 가져온다. altibase_store_result() 후에 이 함수를 호출했다면, 더 이상 가져올 행이 없을 때만 NULL이 반환된다.

반환되는 행 데이터는 배열로 배열 요소의 개수는 altibase_num_fields(result) 로 구할 수 있다. 각 배열 요소 접근시 사용 가능한 인덱스의 범위는 0에서 (altibase_num_fields(result)-1) 까지이다.

반환된 각 칼럼의 데이터는 타입 안전 방식으로 표현(type-safe representation)되므로 문자열 또는 바이너리 형식을 가진다. 그러므로 숫자형 데이터가 필요한 경우에는 사용자가 직접 변환해서 사용해야 한다. 타입 안전 방식에 대한 자세한 내용은 2장의 "ALTIBASE_ROW" 타입을 참고한다.

칼럼의 데이터가 NULL이면 반환된 배열 중 그 칼럼에 해당하는 배열 요소도 NULL 포인터를 가리킬 것이다.

altibase_fetch_row()로 얻은 데이터에는 바이너리 값이 포함되어 있을 수 있기 때문에, strlen() 함수를 이용해서 데이터의 길이를 추정해서는 안 된다. 반드시 altibase_fetch_lengths() 함수를 사용해서 반환될 데이터의 길이를 확인해야 한다.

altibase_fetch_row()가 반환한 데이터는 한 행을 이루는 칼럼들의 값을 모두 포함하고 있다. 그러므로 결과 집합 내에 LOB 또는 GEOMETRY 타입의 대용량 데이터가 포함된 경우에 메모리가 과도하게 사용될 수 있다. 그러므로 대용량 데이터를 조회할 때에는 데이터를 나눠서 처리할 수 있는 Prepared Statement 방식을 사용할 것을 권장한다.

altibase_fetch_row()로 가져온 행 데이터의 값은 다음 altibase_fetch_row()를 호출하기 전까지만 유효하다. 그러므로 한번 가져온 데이터를 다시 쓸 계획이 있다면, 다른 변수에 그 값을 복사해 두어야 한다.

altibase_fetch_row() 함수가 반환한 포인터가 가리키는 메모리는 라이브러리 내부에서 관리되므로 절대로 사용자가 임의로 변경하거나 해제해서는 안 된다.

예제#

altibase_query()의 예제를 참고하라.

altibase_field()#

특정 칼럼에 대한 정보를 구하는 함수이다.

구문#

ALTIBASE_FIELD *  altibase_field (
    ALTIBASE_RES result,
    int             fieldnr );

인자#

자료유형 인자 입/출력 설명
ALTIBASE_RES result 입력 결과 집합 핸들
int fieldnr 입력 칼럼의 번호 (0부터 시작)

반환 값#

지정한 칼럼 정보가 저장된 메모리를 가리키는 포인터가 반환된다. 반환할 칼럼 정보가 없거나 오류가 발생한 경우 NULL이 반환된다.

설명#

이 함수는 지정한 칼럼에 대한 정보를 ALTIBASE_FIELD 포인터로 반환한다. 지정 가능한 칼럼 번호는 0에서 (altibase_num_fields(result)-1) 까지의 값이다.

이 함수가 반환한 포인터가 가리키는 메모리는 라이브러리 내부에서 관리되므로 절대로 사용자가 임의로 변경하거나 해제해서는 안 된다.

예제#

ALTIBASE_FIELD *field;
int num_fields;
int i;

num_fields = altibase_num_fields(result);
for (i = 0; i < num_fields; i++)
{
    field = altibase_field(result, i);
    printf("%d : %s\n", i, field->name);
}

altibase_field_count()#

가장 최근에 수행된 SELECT 질의 결과 집합의 칼럼 수를 구하는 함수이다.

구문#

int  altibase_field_count (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

반환 값 설명
0 보다 큰 값 결과 집합의 칼럼 개수
0 결과 집합이 없음
ALTIBASE_INVALID_FIELDCOUNT 질의 수행 중 에러 발생

설명#

이 함수는 바로 이전에 수행된 SELECT 질의 결과 집합의 칼럼 수를 반환한다. 바로 이전에 수행된 SQL 문이 SELECT문이 아니라면, 0이 반환된다.

예제#

/* ... omit ... */

rc = altibase_query(altibase, qstr);
/* ... check return value ... */

printf("field count = %d\n", altibase_field_count(altibase));

altibase_free_result()#

결과 집합 핸들을 닫는 함수이다.

구문#

int  altibase_free_result (
    ALTIBASE_RES result );

인자#

자료유형 인자 입/출력 설명
ALTIBASE_RES result 입력 결과 집합 핸들

반환 값#

함수 수행이 성공하면 ALTIBASE_SUCCESS, 그렇지 않으면 ALTIBASE_ERROR이 반환된다.

설명#

이 함수는 결과 집합의 저장을 위해 할당된 메모리를 시스템에 반환한다.

다음의 함수를 이용해서 결과 집합의 핸들을 얻었다면, 결과 집합 핸들의 사용이 완료된 후 반드시 altibase_free_result()를 호출해서 할당된 메모리를 해제해야 한다.

  • altibase_store_result()

  • altibase_use_result()

  • altibase_list_fields()

  • altibase_list_tables()

핸들이 해제된 후에는 그 핸들을 사용해서 ACI 함수를 호출하면 안 된다.

연결 핸들을 사용해서 결과 집합의 핸들을 얻었다면 altibase_close() 함수를 호출하거나 핸들을 재사용하기 전에 altibase_free_result() 함수를 호출하여 결과 집합 핸들을 먼저 해제해야 한다. 또한 명령문 핸들을 사용하여 결과 집합 핸들을 얻었다면 altibase_stmt_close() 함수를 호출하기 전에 altibase_free_result() 함수를 호출한다.

예제#

altibase_query() 의 예제를 참고하라.

altibase_get_charset()#

클라이언트가 사용중인 문자 집합을 반환한다.

구문#

const char * altibase_get_charset (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

문자 집합의 이름이 반환된다.

설명#

이 함수는 클라이언트 세션이 사용중인 문자 집합의 이름을 문자열로 반환한다. 이 문자 집합은 NLS_USE 환경 변수, 연결 문자열의 속성 또는 altibase_set_charset() 함수로 설정이 가능하며, 어떤 문자 집합도 설정되어 있지 않은 경우에는 기본 문자 집합의 이름이 반환될 것이다.

이 함수가 반환한 char 포인터가 가리키는 메모리는 라이브러리 내부에서 관리되므로 절대로 사용자가 임의로 변경하거나 해제해서는 안 된다.

예제#

rc = altibase_set_charset(altibase, "KO16KSC5601");
/* ... check return value ... */

printf("NLS_USE = %s\n", altibase_get_charset(altibase));

altibase_get_charset_info()#

이 함수는 현재 지원되지 않는다.

altibase_host_info()#

이 함수는 현재 지원되지 않는다.

altibase_init()#

연결 핸들을 생성하는 함수이다.

구문#

ALTIBASE  altibase_init ( void );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

함수 수행이 성공하면 연결 핸들이 반환되고, 그렇지 않으면 NULL포인터가 반환된다.

설명#

이 함수는 altibase_connect()에 사용될 연결 핸들을 생성하고 초기화하여 반환한다. 이 연결 핸들은 altibase_close() 호출시에 해제된다.

예제#

altibase = altibase_init();
if (altibase == NULL)
{
    return 1;
}

/* ... omit ... */

rc = altibase_close(altibase);
/* ... check return value ... */

altibase_list_fields()#

조건에 일치하는 칼럼의 정보를 구하는 함수이다.

구문#

ALTIBASE_RES  altibase_list_fields (
    ALTIBASE       altibase,
    const char *  conditions[] );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들
const char ** conditions 입력 제한 조건. 3개의 문자열로 구성된 배열

반환 값#

함수 수행이 성공하면 결과 집합 핸들이 반환되고, 그렇지 않으면 NULL포인터가 반환된다.

설명#

이 함수는 명시한 조건에 일치하는 칼럼에 대한 정보를 결과 집합 핸들로 반환한다.

제한 조건은 문자열 3개로 구성된 배열로 지정해야 한다. 배열 요소가 3개보다 많으면 앞의 3개를 제외한 나머지는 무시된다.

이 배열의 각 요소가 의미하는 바는 다음과 같다.

인덱스 조건 설명
0 사용자 이름 사용자 이름을 사용해서 결과 집합을 제한하기 위한 패턴 값이다. 이 값을 NULL 또는 ALTIBASE_ALL_USERS로 지정하면 모든 사용자를 의미한다.
1 테이블 이름 테이블 이름을 사용해서 결과 집합을 제한하기 위한 패턴 값이다. 이 값을 NULL 또는 ALTIBASE_ALL_TABLES로 지정하면 모든 테이블을 의미한다.
2 칼럼 이름 칼럼 이름을 사용해서 결과 집합을 제한하기 위한 패턴 값이다. 이 값을 NULL, ALTIBASE_ALL_COLUMNS, 또는 빈 문자열로 지정하면 모든 칼럼을 의미한다.

제한 조건으로 지정한 값은 패턴을 의미한다. 패턴의 형식은 SQL 문의 LIKE 조건에 지정하는 방식과 동일하다. 이에 대한 자세한 설명은 SQL Reference를 참고한다.

이 함수의 두 번째 인자를 NULL로 입력하면 안 된다. 배열 요소 중의 하나, 즉 제한 조건 중 적어도 하나는 유효한 값이어야 한다.

다른 질의문을 수행하는 중에 이 함수를 호출하거나, 이 함수를 실행해서 반환된 결과 집합을 사용하는 중에 다른 질의문을 수행해서는 안 된다.

이 함수가 반환하는 결과 집합의 열은 다음과 같다.

열 번호 열 이름 자료 유형 설명
1 TABLE_CAT VARCHAR 항상 NULL이 반환된다.
2 TABLE_SCHEM VARCHAR TABLE_NAME 테이블이 속한 스키마의 이름
3 TABLE_NAME VARCHAR (NOT NULL) 테이블의 이름
4 COLUMN_NAME VARCHAR (NOT NULL) 칼럼의 이름.
5 DATA_TYPE VARCHAR (NOT NULL) 칼럼의 SQL 데이터 타입
6 TYPE_NAME VARCHAR (NOT NULL) DATA_TYPE에 대응하는 데이터 타입의 이름을 문자열로 반환
7 COLUMN_SIZE INTEGER 문자 데이터 타입의 경우, 칼럼의 최대 문자열 길이가 반환된다. Date 데이터 타입의 경우, 이 칼럼은 날짜 값을 문자열로 변환한 값을 표시하는데 필요한 문자의 개수를 반환한다. 숫자 데이터 타입의 경우, 이 값은 숫자의 자리수이다.
8 BUFFER_LENGTH INTEGER 칼럼의 데이터를 저장하는 데 필요한 버퍼의 최대 크기를 바이트 단위로 반환
9 DECIMAL_DIGITS SMALLINT 칼럼의 소수점 이하 자리수 (scale). scale이 적용될 수 없는 데이터 타입의 경우, NULL이 반환된다.
10 NUM_PREC_RADIX SMALLINT 칼럼이 숫자형 데이터 타입일 경우 이 값은 10이 반환되며, COLUMN_SIZE와 DECIMAL_DIGITS는 이 칼럼에 허용된 십진 자릿수가 반환된다. 예를 들어 DECIMAL(12,5)인 칼럼의 경우 NUM_PREC_RADIX는 10, COLUMN_SIZE는 12 그리고 DECIMAL_DIGITS는 5가 반환될 것이다.
11 NULLABLE SMALLINT (NOT NULL) 칼럼이 NULL을 허용하면 1, 허용하지 않으면 0이 반환된다.
12 REMARKS VARCHAR 칼럼에 대한 설명
13 COLUMN_DEF VARCHAR 칼럼의 디폴트 값
14 SQL_DATA_TYPE SMALLINT (NOT NULL) 칼럼의 SQL 데이터 타입. DATA_TYPE과 동일한 값이다.
15 SQL_DATETIME_SUB SMALLINT DATE 데이터 타입을 위한 subtype 코드. DATE 타입이 아닌 칼럼의 경우 NULL이 반환된다.
16 CHAR_OCTET_LENGTH INTEGER 문자 또는 바이너리 타입의 칼럼일 경우 칼럼의 최대 길이가 바이트 단위로 반환된다. 그 외의 타입일 경우 NULL이 반환된다.
17 ORDINAL_POSITION INTEGER (NOT NULL) 테이블에서 칼럼의 순서 위치. 1부터 시작된다.
18 IS_NULLABLE VARCHAR NULL을 허용하면 "YES", 허용하지 않으면 "NO"가 반환된다.
19 STORE_TYPE CHAR(1) 칼럼의 데이터가 저장되는 방식. 가변(Variable) 방식일 경우 'V', 고정(Fixed) 방식일 경우 'F'가 반환된다.

결과 집합은 TABLE_CAT, TABLE_SCHEM, TABLE_NAME, 및 ORDINAL_POSITION의 값으로 정렬되어 반환된다.

altibase_list_fields()는 altibase_use_result(), altibase_list_tables() 함수처럼 결과 집합을 반환하는 다른 함수들과 섞어서 사용할 수 없다. 즉, 결과 집합을 반환하는 함수들의 경우, 한 함수에 의해 반환된 결과 집합을 먼저 해제한 후에 다른 함수를 사용해서 다른 결과 집합을 가져올 수 있다.

이 함수를 통해 얻은 결과 집합은 사용이 끝난 후에 altibase_free_result()를 이용해서 해제해야 한다.

altibase_list_tables()#

조건에 일치하는 테이블의 정보를 구하는 함수이다.

구문#

ALTIBASE_RES  altibase_list_tables (
    ALTIBASE   altibase,
    const char *  conditions[] );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들
const char ** conditions 입력 제한 조건. 3개의 문자열로 구성된 배열

반환 값#

함수 수행이 성공하면 결과 집합 핸들이 반환되고, 그렇지 않으면 NULL포인터가 반환된다.

설명#

이 함수는 명시한 조건에 일치하는 테이블에 대한 정보를 결과 집합 핸들로 반환한다.

제한 조건은 문자열 3개로 구성된 배열로 지정해야 한다. 배열 요소가 3개보다 많으면 앞의 3개를 제외한 나머지는 무시된다.

이 배열의 각 요소가 의미하는 바는 다음과 같다.

인덱스 조건 설명
0 사용자 이름 사용자 이름을 이용해서 결과 집합을 제한하기 위한 패턴 값이다. 이 값을 NULL 또는 ALTIBASE_ALL_USERS로 지정하면 모든 사용자를 의미한다.
1 테이블 이름 테이블 이름을 이용해서 결과 집합을 제한하기 위한 패턴 값이다. 이 값을 NULL 또는 ALTIBASE_ALL_TABLES로 지정하면 모든 테이블을 의미한다.
2 테이블 유형 테이블 유형을 이용해서 결과 집합을 제한하기 위한 패턴 값이다. 이 값을 NULL 또는 ALTIBASE_ALL_TABLE_TYPES로 지정하면 모든 테이블 유형을 의미한다.

제한 조건으로 지정한 값은 패턴을 의미한다. 패턴의 형식은 SQL 문의 LIKE 조건에 지정하는 방식과 동일하다. 이에 대한 자세한 설명은 SQL Reference를 참고한다.

이 함수의 두 번째 인자를 NULL로 입력하면 안 된다. 배열 요소 중의 하나, 즉 제한 조건 중 적어도 하나는 유효한 값이어야 한다.

다른 질의문을 수행하는 중에 이 함수를 호출하거나, 이 함수를 실행해서 반환된 결과 집합을 사용하는 중에 다른 질의문을 수행해서는 안 된다.

이 함수가 반환하는 결과 집합의 열은 다음과 같다.

열 번호 열 이름 자료 유형 설명
1 TABLE_CAT VARCHAR 항상 NULL이 반환된다.
2 TABLE_SCHEM VARCHAR TABLE_NAME 테이블이 속한 스키마의 이름
3 TABLE_NAME VARCHAR (NOT NULL) 테이블의 이름
4 TABLE_TYPE VARCHAR 테이블 유형. 항상 'TABLE'이 반환된다.
5 REMARKS VARCHAR 사용되지 않음
6 MAXROW BIGINT 테이블에 입력 가능한 최대 레코드의 개수. 이 값이 0이면 최대 레코드 개수에 제한이 없음을 나타낸다.
7 TABLESPACE_NAME VARCHAR 테이블이 저장된 테이블 스페이스의 이름
8 TABLESPACE_TYPE INTEGER 테이블스페이스 타입
9 PCTFREE INTEGER 테이블에 설정된 PCTFREE 값. PCTFREE에 대한 설명은 SQL Reference의 CREATE TABLE 구문을 참고하라.
10 PCTUSED INTEGER 테이블에 설정된 PCTUSED 값. PCTUSED에 대한 설명은 SQL Reference의 CREATE TABLE 구문을 참고하라.

결과 집합은 TABLE_TYPE, TABLE_CAT, TABLE_SCHEM, 및 TABLE_NAME의 값으로 정렬되어 반환된다.

altibase_list_tables()는 altibase_use_result(), altibase_list_fields() 함수처럼 결과 집합을 반환하는 다른 함수들과 섞어서 사용할 수 없다. 즉, 결과 집합을 반환하는 함수들의 경우, 한 함수에 의해 반환된 결과 집합을 먼저 해제한 후에 다른 함수를 사용해서 다른 결과 집합을 가져올 수 있다.

이 함수를 통해 얻은 결과 집합은 사용이 끝난 후에 altibase_free_result()를 이용해서 해제해야 한다.

altibase_next_result()#

다음 결과 집합에 접근하기 위해 사용되는 함수이다.

구문#

int  altibase_next_result (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

반환 값 설명
ALTIBASE_SUCCESS 다음 결과 집합이 존재함
ALTIBASE_NO_DATA 다음 결과 집합이 존재하지 않음
ALTIBASE_ERROR 에러 발생

설명#

이 함수는 이전에 여러 결과 집합을 반환하는 저장 프로시저를 수행한 경우, 다음 결과 집합에 접근하기 위해 사용한다.

이전에 가져온 결과 집합이 있다면, altibase_next_result()를 호출하기 전에 altibase_free_result()로 그 결과 집합을 먼저 해제해야 한다.

이 함수를 수행하면 altibase_query()를 수행한 것과 같은 상태가 된다. 이는 altibase_store_result(), altibase_affected_rows() 등의 함수를 호출할 수 있음을 의미한다.

예제#

#define QSTR "EXEC PROC_RESULTSET"

ALTIBASE       altibase;
ALTIBASE_RES   result;
int            num_fields;
int            rc;

/* ... omit ... */

rc = altibase_query(altibase, QSTR);
/* ... check return value ... */

while (1)
{
  result = altibase_use_result(altibase);
  /* ... check return value ... */

  num_fields = altibase_field_count(altibase);
  process_result_set(result, num_fields );
  altibase_free_result(result);

  if ((rc = altibase_next_result(altibase)) == ALTIBASE_NO_DATA)
    break;
  /* ... check return value ... */

}

altibase_close(altibase);

altibase_num_fields()#

결과 집합의 칼럼 수를 구하는 함수이다.

구문#

int  altibase_num_fields (
    ALTIBASE_RES result );

인자#

자료유형 인자 입/출력 설명
ALTIBASE_RES result 입력 결과 집합 핸들

반환 값#

결과 집합의 칼럼 수가 반환된다. SQL 문 수행시 오류가 발생했으면 ALTIBASE_INVALID_FIELDCOUNT가 반환될 것이다.

설명#

이 함수는 결과 집합의 칼럼 수를 반환한다:

칼럼 수는 결과 집합 핸들 또는 연결 핸들을 사용해서 얻을 수 있다. 만약 이전의 altibase_store_result() 또는 altibase_use_result() 호출에서 NULL이 반환된 경우에는 연결 핸들을 이용해야 된다. 연결 핸들로 칼럼 개수를 구할 때는 altibase_field_count() 함수를 이용해야 한다.

altibase_num_rows()#

결과 집합의 행의 개수를 구하는 함수이다.

구문#

ALTIBASE_LONG altibase_num_rows (
    ALTIBASE_RES result );

인자#

자료유형 인자 입/출력 설명
ALTIBASE_RES result 입력 결과 집합 핸들

반환 값#

결과 집합의 행의 개수가 반환된다.

설명#

이 함수는 결과 집합의 행의 개수를 반환한다.

결과 집합을 가져온 함수가 altibase_store_result()였는지, 아니면 altibase_use_result()였는지에 따라서 이 함수의 결과는 달라진다. 만약 altibase_store_result()가 사용되었다면, 결과 집합에 포함된 전체 레코드의 개수가 정확하게 반환된다. 하지만 altibase_use_result()가 사용되었다면, 전체 레코드가 모두 fetch 되기 전까지는 정확한 레코드 수가 반환되지 않는다.

INSERT, UPDATE, 또는 DELETE 문 수행으로 인해 변경된 행의 개수를 구하려면 altibase_affected_rows()를 사용하라.

altibase_proto_version()#

클라이언트와 서버 사이에 사용되는 통신 프로토콜의 버전을 구하는 함수이다.

구문#

int  altibase_proto_version (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

통신 프로토콜의 버전을 나타내는 상수가 반환된다. 입력된 연결 핸들이 유효하지 않거나 아직 서버와 연결되기 전이거나 또는 프로토콜 버전을 얻을 수 없는 경우에는 ALTIBASE_INVALID_VERSION이 반환된다.

설명#

이 함수는 통신 프로토콜의 버전을 나타내는 상수 값을 반환한다.

반환 값의 형식은 MMmmttSSpp이며 각각의 의미는 다음과 같다.

형식 설명 비고
MM 주버전
mm 부버전 버전의 자리수가 2보다 작을 경우, 나머지 자리는 0으로 채워서 반환된다.
tt 항상 0으로 채워서 반환된다.
SS 패치 셋 항상 0으로 채워서 반환된다.
pp 패치 버전의 자리수가 2보다 작을 경우, 나머지 자리는 0으로 채워서 반환된다.

예를 들어, 이 함수의 반환 값이 605000001이면 통신 프로토콜의 버전은 7.1.0이다.

altibase_proto_verstr()#

클라이언트와 서버 사이에 사용되는 통신 프로토콜의 버전을 구하는 함수이다.

구문#

const char *  altibase_proto_verstr (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

통신 프로토콜의 버전을 나타내는 문자열이 반환된다. 입력된 연결 핸들이 유효하지 않거나 아직 서버와 연결되기 전이거나 또는 프로토콜 버전을 얻을 수 없는 경우에는 NULL이 반환된다.

설명#

이 함수는 통신 프로토콜의 버전을 나타내는 문자열을 반환한다. 반환 값의 형식은 x.x.0.0.x이며 순서대로 주버전, 부버전, 패치를 의미한다.

이 함수가 반환한 char 포인터가 가리키는 메모리는 라이브러리 내부에서 관리되므로 절대로 사용자가 임의로 변경하거나 해제해서는 안 된다.

altibase_query()#

질의를 수행하는 함수이다.

구문#

int  altibase_query (
    ALTIBASE      altibase,
    const char *  qstr );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들
const char * qstr 입력 질의문 (NULL 종료 문자열이어야 한다)

반환 값#

함수 수행이 성공하면 ALTIBASE_SUCCESS, 그렇지 않으면 ALTIBASE_ERROR가 반환된다.

설명#

이 함수는 질의문을 실행한다.

질의문은 반드시 널 종료 문자열이여야 하며, 한 개의 SQL 문이어야 한다. 세미콜론(;)으로 연결된 다중 SQL 문은 지원되지 않는다. 다중 SQL 문을 실행하려면 저장 프로시저를 활용하라.

예제#

#define QSTR "SELECT last_name, first_name FROM friends"

ALTIBASE       altibase;
ALTIBASE_RES   result;
ALTIBASE_ROW   row;
ALTIBASE_LONG *lengths;
int            num_fields;
int            rc;
int            i;

/* ... omit ... */

rc = altibase_query(altibase, QSTR);
/* ... check return value ... */

result = altibase_use_result(altibase);
/* ... check return value ... */

num_fields = altibase_num_fields(result);
while ((row = altibase_fetch_row(result)) != NULL)
{
   lengths = altibase_fetch_lengths(result);
   for (i = 0; i < num_fields; i++)
   {
       printf("(%ld) %s", lengths[i], (row[i] == NULL ? "null" : row[i]));
   }
   printf("\n");
}

rc = altibase_free_result(result);
/* ... check return value ... */

/* ... omit ... */

altibase_rollback()#

이 함수는 현재 트랜잭션을 롤백한다.

구문#

int  altibase_rollback (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

함수 수행에 성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR이 반환된다.

설명#

이 함수는 현재 연결된 세션에서 수행중인 트랜잭션을 철회 (롤백)한다. 해당 세션이 AUTOCOMMIT 모드가 아닌 경우, 이 함수 수행 후 다음 SQL 문 실행시에 자동으로 새로운 트랜잭션이 시작된다

예제#

altibase_set_autocommit()의 예제를 참고하라.

altibase_server_version()#

Altibase 서버의 버전을 구하는 함수이다.

구문#

int  altibase_server_version (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

Altibase 서버의 버전을 나타내는 상수가 반환된다. 입력된 연결 핸들이 유효하지 않거나 아직 서버와 연결되기 전이거나 또는 서버의 버전을 얻을 수 없는 경우에는 ALTIBASE_INVALID_VERSION이 반환된다.

설명#

이 함수는 Altibase 서버의 버전을 나타내는 상수 값을 반환한다.

반환 값의 형식은 MMmmttSSpp이며 각각의 의미는 다음과 같다.

형식 설명 비고
MM 주버전
mm 부버전 버전의 자리수가 2보다 작을 경우, 나머지 자리는 0으로 채워서 반환된다.
tt 버전의 자리수가 2보다 작을 경우, 나머지 자리는 0으로 채워서 반환된다.
SS 패치 셋 버전의 자리수가 2보다 작을 경우, 나머지 자리는 0으로 채워서 반환된다.
pp 패치 버전의 자리수가 2보다 작을 경우, 나머지 자리는 0으로 채워서 반환된다.

예를 들어, 이 함수의 반환 값이 605010309이면 클라이언트 라이브러리의 버전은 7.1.0.3.9이다.

altibase_server_verstr()#

Altibase 서버의 버전을 구하는 함수이다.

구문#

const char *  altibase_server_verstr (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

Altibase 서버의 버전을 나타내는 문자열이 반환된다. 입력된 연결 핸들이 유효하지 않거나 아직 서버와 연결되기 전이거나 또는 프로토콜 버전을 얻을 수 없는 경우에는 NULL이 반환된다.

설명#

이 함수는 Altibase 서버의 버전을 나타내는 문자열을 반환한다. 반환 값의 형식은 x.x.x.x.x이며 순서대로 주버전, 부버전, 텀, 패치 셋, 패치를 의미한다.

이 함수가 반환한 char 포인터가 가리키는 메모리는 라이브러리 내부에서 관리되므로 절대로 사용자가 임의로 변경하거나 해제해서는 안 된다.

altibase_set_charset()#

문자 집합 (character set)을 설정하는 함수이다.

구문#

int  altibase_set_charset (
    ALTIBASE       altibase,
    const char *   charset );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들
const char * charset 입력 설정할 문자 집합

반환 값#

함수 수행에 성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR이 반환된다.

설명#

이 함수는 클라이언트 세션에서 사용할 문자 집합을 설정한다. 문자 집합은 서버와 연결하기 전에 설정되어야 한다.

문자 집합은 이 함수 외에 ALTIBASE_NLS_USE 환경 변수 또는 서버 접속시 연결 문자열의 속성을 사용해서도 설정이 가능한다. 문자 집합 설정은 altibase_set_charset() 함수, 연결 속성 문자열, ALTIBASE_NLS_USE 환경 변수 순으로 우선 순위가 주어진다.

예제#

ALTIBASE altibase;

altibase = altibase_init();
/* ... check return value ... */

rc = altibase_set_charset(altibase, "KO16KSC5601"));
if (ALTIBASE_NOT_SUCCEEDED(rc))
{
    /* ... error handling ... */
}

rc = altibase_connect(altibase, CONNSTR);
/* ... check return value ... */

altibase_set_autocommit()#

자동 커밋 (autocommit) 여부를 설정하는 함수이다.

구문#

int  altibase_set_autocommit (
    ALTIBASE    altibase,
    int         mode );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들
int mode 입력 Autocommit 여부. ALTIBASE_AUTOCOMMIT_ON 또는 ALTIBASE_AUTOCOMMIT_OFF로 설정 가능하다.

반환 값#

함수 수행에 성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR이 반환된다.

설명#

mode가 ALTIBASE_AUTOCOMMIT_ON이면 자동 커밋, ALTIBASE_AUTOCOMMIT_OFF이면 수동 커밋으로 설정된다. 아무것도 설정하지 않았을 때는 기본적으로 자동 커밋 모드이다.

반드시 위의 두 값 중 하나만을 사용해야 한다. 그렇지 않을 경우, 함수 수행은 실패할 것이다.

예제#

rc = altibase_set_autocommit(altibase, ALTIBASE_AUTOCOMMIT_OFF);
/* ... check return value ... */

/* ... omit ... */

rc = (error_exist) ? altibase_rollback(altibase) : altibase_commit(altibase);
if (ALTIBASE_NOT_SUCCEEDED(rc))
{
    /* ... error handling ... */
}

rc = altibase_set_autocommit(altibase, ALTIBASE_AUTOCOMMIT_ON);
/* ... check return value ... */

altibase_set_failover_callback()#

Failover를 위한 콜백 함수를 등록하는 함수이다.

구문#

int  altibase_set_failover_callback (
    ALTIBASE                         altibase,
    ALTIBASE_FAILOVER_CALLBACK       callback,
    void *                           app_context );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들
ALTIBASE_FAILOVER_CALLBACK callback 입력 등록할 콜백 함수. 등록을 해제하려면 여기에 NULL을 입력한다.
void * app_context 입력 사용자 컨텍스트. 콜백 함수 내에서 사용할 데이터가 저장된 버퍼를 가리키는 포인터

반환 값#

함수 수행에 성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR이 반환된다.

설명#

이 함수는 STF (Service Time Failover) 발생 시 응용 프로그램과 ACI 라이브러리의 통신을 위한 콜백 함수를 등록한다. STF 발생시 사용자가 특별히 처리해 주어야 할 작업이 있을 경우, 콜백 함수에 처리할 작업을 지시하고 altibase_set_failover_callback 함수를 사용해서 콜백 함수를 등록하면 된다. 콜백 함수의 사용을 해제하려면, 두 번째 인자로 NULL을 입력하여 altibase_set_failover_callback 함수를 호출하면 된다.

Failover 콜백 함수의 등록은 altibase_connect()가 성공한 후에 수행되어야 한다.

예제#

6장 Failover를 참고하라.

altibase_set_option()#

연결 옵션을 설정하는 함수이다.

구문#

int  altibase_set_option (
    ALTIBASE           altibase,
    ALTIBASE_OPTION    option,
    const void *       arg );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들
ALTIBASE_OPTION option 입력 설정할 옵션
const void * arg 입력 설정할 옵션 값

반환 값#

함수 수행에 성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR이 반환된다.

설명#

이 함수는 Altibase 서버에 접속할 때 사용되는 옵션을 설정한다. 여러 옵션을 설정하려면, 각각의 옵션과 함께 이 함수를 여러 번 호출해야 한다.

이 함수는 altibase_init()를 호출한 후, altibase_connect()를 호출하기 전에 사용되어야 한다.

연결 옵션에 대한 자세한 내용은 2장의 "enum ALTIBASE_OPTION" 절을 참고한다.

예제#

ALTIBASE altibase;

altibase = altibase_init();
/* ... check return value ... */

rc = altibase_set_option(altibase, ALTIBASE_APP_INFO, "myapp");
/* ... check return value ... */
rc = altibase_set_option(altibase, ALTIBASE_NLS_USE, "KO16KSC5601");
/* ... check return value ... */

rc = altibase_connect(altibase, CONNSTR);
if (ALTIBASE_NOT_SUCCEEDED(rc))
{
    fprintf(stderr, "Failed to connect: %s\n", altibase_error(altibase));
}

altibase_sqlstate()#

바로 이전에 실행된 SQL 명령문에 대한 SQLSTATE를 구하는 함수이다.

구문#

const char *  altibase_sqlstate (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

SQLSTATE 에러 코드를 나타내는 널 종료 문자열이 반환된다.

설명#

이 함수는 가장 최근에 실행된 SQL 명령문에 대한 SQLSTATE 에러 코드를 나타내는 널 종료 문자열을 반환한다.

SQLSTATE는 5개의 문자로 이루어진다. 대표적으로 "00000"은 "에러 없음"을 나타낸다. SQLSTATE에 대한 자세한 내용은 Error Message Reference를 참고한다.

SQLSTATE는 altibase_errno()가 반환하는 값과는 다르다. 에러 정보를 확인해서 처리해야 할 루틴이 있다면 SQLSTATE 값을 사용할 것을 권장한다. 일반적으로 altibase_errno()의 반환 값을 확인해서 에러 처리 루틴을 작성하는 것을 권장하지 않는다.

SQLSTATE와 altibase_errno()의 반환 값은 1:1로 맵핑되지 않는다. 그러므로 altibase_errno()의 반환 값을 보고 SQLSTATE를 추측하거나, SQLSTATE를 이용해서 altibase_errno()의 반환 값을 추측해서는 안된다.

어떤 함수 수행시 오류가 발생한 경우 바로 오류를 확인하지 않고 다른 함수를 호출하면, 이 오류에 대한 정보가 사라진다. 따라서 오류 발생시 바로 이 함수를 사용해서 오류 정보를 확인해야 한다.

이 함수가 반환한 char 포인터가 가리키는 메모리는 라이브러리 내부에서 관리되므로 절대로 사용자가 임의로 변경하거나 해제해서는 안 된다.

예제#

altibase_errno()의 예제를 참고하라.

altibase_store_result()#

질의 수행에 대한 결과 집합 전체를 가져오는 함수이다.

구문#

ALTIBASE_RES  altibase_store_result (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

질의 수행 결과에 대한 결과 집합의 핸들이 반환된다. 에러가 발생한 경우 NULL이 반환된다.

설명#

이 함수는 질의 수행의 전체 결과 집합에 대한 핸들을 반환한다.

이 함수를 수행하면 질의 수행 결과를 서버로부터 모두 가져와서 클라이언트에 저장해 둔다. 이 함수 호출 후 altibase_fetch_row()를 호출할 때는 이미 서버로부터 모든 결과 집합을 받아온 상태이므로 서버와 통신하지 않으며, 받아둔 결과 집합의 데이터가 반환된다.

이 함수 수행시에는 모든 결과 집합을 받아두므로 LOB이나 GEOMETRY와 같은 대용량 칼럼이 포함되어 있거나 결과 행의 개수가 많다면, 메모리가 과다하게 사용될 수 있으므로 이 함수를 쓸 때는 주의가 필요하다.

altibase_store_result()는 질의 결과가 없을 때에도 NULL 대신 빈 결과 집합을 반환한다. altibase_store_result()를 호출해서 NULL이 반환되었다면, 결과 집합을 읽는 데 실패한 것이다.

altibase_use_result() 대신 altibase_store_result()를 사용하면 다음과 같은 함수를 추가로 사용할 수 있다:

  • altibase_num_rows()

  • altibase_data_seek()

altibase_store_result()는 altibase_use_result(), altibase_list_tables() 함수처럼 결과 집합을 반환하는 다른 함수들과 섞어서 사용할 수 없다. 즉, 결과 집합을 반환하는 함수들의 경우, 한 함수에 의해 반환된 결과 집합을 먼저 해제한 후에 다른 함수를 사용해서 다른 결과 집합을 가져올 수 있다.

이 함수를 통해 얻은 결과 집합은 사용이 끝난 후에 altibase_free_result()를 이용해서 해제해야 한다.

예제#

altibase_query()과 altibase_data_seek()의 예제를 참고하라.

altibase_use_result()#

질의 수행에 대한 결과 집합을 가져오는 함수이다.

구문#

ALTIBASE_RES  altibase_use_result (
    ALTIBASE altibase );

인자#

자료유형 인자 입/출력 설명
ALTIBASE altibase 입력 연결 핸들

반환 값#

질의 수행 결과에 대한 결과 집합의 핸들이 반환된다. 에러가 발생한 경우 NULL이 반환된다.

설명#

이 함수는 질의 수행의 결과 집합에 대한 핸들을 반환한다.

이 함수는 altibase_store_result()와 달리 서버로부터 모든 결과 집합을 한꺼번에 가져오지 않는다. 이 함수 호출 후 altibase_fetch_row()를 호출할 때마다 서버로부터 데이터를 가져온다.

altibase_use_result()는 질의 결과가 없을 때에도 NULL 대신 빈 결과 집합을 반환한다. altibase_use_result()를 호출해서 NULL이 반환되었다면, 결과 집합을 읽는 데 실패한 것이다.

altibase_use_result()는 altibase_store_result(), altibase_list_tables() 함수처럼 결과 집합을 반환하는 다른 함수들과 섞어서 사용할 수 없다. 즉, 결과 집합을 반환하는 함수들의 경우, 한 함수에 의해 반환된 결과 집합을 먼저 해제한 후에 다른 함수를 사용해서 다른 결과 집합을 가져올 수 있다.

이 함수를 통해 얻은 결과 집합은 사용이 끝난 후에 altibase_free_result()를 이용해서 해제해야 한다.

예제#

altibase_query()의 예제를 참고하라.