콘텐츠로 이동

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);