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()의 예제를 참고하라.