SQLStatistics
SQLStatistics#
단일 테이블에 대한 통계 목록과 그 테이블과 관련된 색인들을 검색한다. Altibase CLI 드라이버는 정보들을 결과 집합 형태로 반환한다.
Unicode SQLStatisticsW() 동작은 SQLStatistics()와 동일하다.
구 문#
SQLRETURN SQLStatistics (
SQLHSTMT stmt,
SQLCHAR * cName,
SQLSMALLINT cNameLength,
SQLCHAR * sName,
SQLSMALLINT sNameLength,
SQLCHAR * tName,
SQLSMALLINT tNameLength,
SQLSMALLINT unique,
SQLSMALLINT reserved );
인 자#
자료유형 | 인자 | 사용 | 설명 |
---|---|---|---|
SQLHSTMT | stmt | 입력 | 명령문 핸들 |
SQLCHAR * | cName | 입력 | 카탈로그 이름 |
SQLSMALLINT | cNameLength | 입력 | *cName 문자 개수 |
SQLCHAR * | sName | 입력 | 스키마 이름 |
SQLSMALLINT | sNameLength | 입력 | *sName의 문자 개수 |
SQLCHAR * | tName | 입력 | 테이블 이름, null pointer일 수 없다. |
SQLSMALLINT | tNameLength | 입력 | *tName의 문자 개수 |
SQLSMALLINT | unique | 입력 | index type:SQL_INDEX_UNIQUE or SQL_INDEX_ALL |
SQLSMALLINT | reserved | 입력 | 사용 안함 |
결괏값#
SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_INVALID_HANDLE
SQL_ERROR
설 명#
SQLStatistcs()는 단일 테이블에 대한 정보를 NON_UNIQUE, TYPE, INDEX_QUALIFIER, INDEX_NAME, 그리고 ORDINAM_POSITION 순서로 결과 집합에 반환한다. 결과 집합은 테이블의 통계 정보와 (CARDINALITY와 PAGES) 각 색인에 대한 정보를 결합시킨다.
이름 | 번호 | 자료 유형 | 설명 |
---|---|---|---|
TABLE_CAT | 1 | VARCHAR | 항상 NULL이 반환 |
TABLE_SCHEM | 2 | VARCHAR | TABLE_NAME을 포함하는 스키마 이름 |
TABLE_NAME | 3 | VARCHAR (NOT NULL) | 테이블 이름 |
NON_UNIQUE | 4 | SMALLINT | 색인이 중복 값을 금지하는지의 여부. - SQL_TRUE: 색인이 중복 값을 허용 - SQL_FALSE: 색인이 고유한 값 - NULL: TYPE이 SQL_TABLE_STAT 일 때 NULL을 반환 |
INDEX_QUALIFIER | 5 | VARCHAR | 사용 안함 (빈 문자열이 반환 됨) |
INDEX_NAME | 6 | VARCHAR | 색인 이름; TYPE이 SQL_TABLE_STAT 이면 NULL 반환 |
TYPE | 7 | SMALLINT (NOT NULL) | 반환된 정보의 type. - SQL_TABLE_STAT: 테이블에 대한 통계정보를 포함하는지 표시 (CARDINALITY 또는 PAGES 열에) - SQL_INDEX_BTREE: B-Tree 인덱스임을 표시 - SQL_INDEX_HASHED: 해시된 색인 인지를 표시 - SQL_INDEX_OTHER : 색인 유형이 그 밖의 다른 색인 인지를 표시. (T-Tree) |
ORDINAL_POSITION | 8 | SMALLINT | 색인 내의 열의 순서적 위치. (1 부터 시작) TYPE이 SQL_TABLE_STAT이면 NULL이 반환. |
COLUMN_NAME | 9 | VARCHAR | 열의 이름. 만약 열이 표현식이면 (e.g. SALARY + BENEFITS) 표현식이 반환. 표현식이 결정되어질 수 없다면 빈 문자열이 반환. TYPE이 SQL_TABLE_STAT이면 NULL이 반환 |
ASC_OR_DESC | 10 | CHAR(1) | 열에 대한 정렬 순서. - A: 오름차순 - D: 내림차순 이 열 정력 순서가 DB에 의해 지원되지 않고 TYPE이 SQL_TABLE_STAT이면 NULL 반환 |
CARDINALITY | 11 | INTEGER | 테이블이나 색인의 순서. - TYPE이 SQL_TABLE_STAT이면 행 번호 - TYPE이 SQL_TABLE_STAT이 아니면 색인의 고유한 값 번호 - 값이 DB에서 이용 가능하지 않으면 NULL 반환 |
PAGES | 12 | INTEGER | 색인이나 테이블에 저장하기 위해 사용된 페이지 번호. - TYPE이 SQL_TABLE_STAT이면 이 열은 테이블을 지정하기 위해 사용된 페이지 수를 포함 - TYPE이 SQL_TABLE_STAT이 아니면 이 열은 색인을 저장하기 위해 사용된 페이지 수를 포함 - 값이 DB에서 이용 가능하지 않으면 NULL 반환 |
FILTER_CONDITION | 13 | VARCHAR | 색인이 필터된 색인이면 이 열은 필터 조건이다. 즉, SALARY > 30000; 필터 조건이 결정 되어질 수 없다면 이 열은 빈 문자열이다. NULL: 색인이 필터된 색인이 아닌 경우, 색인이 필터된 색인인지 또는 TYPE이 SQL_TABLE_STAT 인지 결정 되어질 수 없는 경우 |
[표 2‑5] SQLStatistics()에 의해 반환 되는 열
진 단#
SQLSTATE | 설명 | 부연설명 |
---|---|---|
08S01 | 통신 회선 장애 (데이터 송수신 실패) | Altibase CLI 드라이버와 DB간에 함수 처리가 완료되기 전에 통신 회선 실패 |
HY000 | 일반 오류 | |
HY009 | 유효하지 않은 인자 사용 (null pointer) | tName이 null pointer 임 cName이 null pointer 임 sName이 null pointer 임 |
관련 함수#
SQLBindCol
SQLFetch
SQLPrimaryKeys
예 제#
< $ALTIBASE_HOME/sample/SQLCLI/demo_meta4.cpp 참고 >
if (SQLStatistics(stmt,NULL, 0,
NULL, 0,
"DEMO_META4", SQL_NTS,
SQL_INDEX_ALL, 0) != SQL_SUCCESS)
{
execute_err(dbc, stmt, "SQLStatistics");
SQLFreeStmt(stmt, SQL_DROP);
return SQL_ERROR;
}
SQLBindCol(stmt, 2, SQL_C_CHAR, szSchema, STR_LEN, &cbSchema);
SQLBindCol(stmt, 3, SQL_C_CHAR, szTableName, STR_LEN,&cbTableName);
SQLBindCol(stmt, 4, SQL_C_SSHORT, &NonUnique, 0, &cbNonUnique);
SQLBindCol(stmt, 6, SQL_C_CHAR, szIndexName, STR_LEN, &cbIndexName);
SQLBindCol(stmt, 8, SQL_C_SSHORT, &OrdinalPosition, 0, &cbOrdinalPosition);
SQLBindCol(stmt, 9, SQL_C_CHAR, szColumnName, STR_LEN, &cbColumnName);
SQLBindCol(stmt, 10, SQL_C_CHAR, szAscDesc, 2, &cbAscDesc);