SQLTables
SQLTables#
특정 DB에 저장된 테이블, 카탈로그 또는 스키마 이름들, 그리고 테이블 타입의 목록이 결과 집합 형태로 반환된다.
Unicode SQLTablesW() 동작은 SQLTables()와 동일하다.
구 문#
SQLRETURN SQLTables (
SQLHSTMT stmt,
SQLCHAR * cName,
SQLSMALLINT cNameLength,
SQLCHAR * sName,
SQLSMALLINT sNameLength,
SQLCHAR * tName,
SQLSMALLINT tNameLength,
SQLCHAR * tableType,
SQLSMALLINT tableTypeLength);
인 자#
자료유형 | 인자 | 사용 | 설명 |
---|---|---|---|
SQLHSTMT | stmt | 입력 | 검색된 결과들에 대한 명령문 핸들 |
SQLCHAR * | cName | 입력 | 카탈로그 이름 |
SQLSMALLINT | cNameLength | 입력 | *cName의 문자 개수 |
SQLCHAR * | sName | 입력 | 스키마 이름 |
SQLSMALLINT | sNameLength | 입력 | *sName의 문자 개수 |
SQLCHAR * | tName | 입력 | 테이블 이름 |
SQLSMALLINT | tNameLength | 입력 | *tName의 문자 개수 |
SQLCHAR * | tableType | 입력 | 대조할 테이블 타입의 목록 |
SQLSMALLINT | tableTypeLength | 입력 | *tableType의 문자 개수 |
결괏값#
SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_INVALID_HANDLE
SQL_ERROR
설 명#
SQLTables()는 요구된 범위 내에서 모든 테이블 정보를 나열한다. 어떤 사용자는 임의의 테이블에 대해서 SELECT 특권을 가질 수도 있고 아닐 수도 있다.
애플리케이션은 SELECT 특권이 주어지지 않은 사용자가 임의의 테이블을 검색하는 상황을 조정할 수 있어야만 한다.
카탈로그, 스키마, 테이블 타입의 목록을 지원하기 위하여, 다음 특별한 구문들은 SQLTables()의 cName, sName, tName, 그리고 tableType을 위해 정의된다:
만약 sName이 SQL_ALL_SCHEMAS이고 그리고 cName과 tName이 빈 문자열이면 결과 집합은 DB에 대해 유효한 스키마 목록들을 포함한다. (모든 열들은 TABLE_SCHEM 열이 NULL 들을 포함하기를 기대한다.)
만약 tableType이 SQL_ALL_TABLE_TYPES이고 cName, sName, 그리고 tName이 빈 문자열이면, 결과 집합은 DB에 대해 유효한 테이블 타입 목록들을 포함한다. (TABLE_TYPE 열을 제외한 모든 열은 NULL들을 포함한다.)
애플리케이션은 tableType을 대문자로 항상 명시해야 하며, 다음의 값 중 하나를 지정할 수 있다: SQL_ALL_TABLE_TYPES, "SYSTEM TABLE", "TABLE", "VIEW", "QUEUE", "SYNONYM", "MATERIALIZED VIEW".
SQLTables()는 TABLE_TYPE, TABLE_CAT, TABLE_SCHEM, 그리고 TABLE_NAME 순서에 의해 결과들을 표준 결과 집합 형태로 반환한다.
다음 테이블은 결과 집합의 열들을 나열한 것이다.
열 이름 | 열 번호 | 자료 유형 | 설명 |
---|---|---|---|
TABLE_CAT | 1 | VARCHAR | 항상 NULL이 반환 |
TABLE_SCHEM | 2 | VARCHAR | TABLE_NAME을 포함하는 스키마 이름. DB에 적합치 않으면 NULL |
TABLE_NAME | 3 | VARCHAR (NOT NULL) | 테이블 이름 |
TABLE_TYPE | 4 | VARCHAR | 테이블 타입 이름 아래 타입 중 하나가 반환된다. - SQL_ALL_TABLE_TYPES - 'SYSTEM TABLE' - 'TABLE' - 'VIEW' - 'QUEUE' - 'SYNONYM' - 'MATERIALIZED VIEW' |
REMARKS | 5 | VARCHAR | 사용되지 않음 |
[표 2‑7] SQLTables()에 의해 반환 되는 열
진 단#
SQLSTATE | 설명 | 부연설명 |
---|---|---|
08S01 | 통신 회선 장애 (데이터 송수신 실패) | Altibase CLI 드라이버와 DB간에 함수 처리가 완료되기 전에 통신 회선 실패 |
HY000 | 일반 오류 |
관련 함수#
SQLBindCol
SQLColumns
SQLFetch
SQLStatistics
예 제#
< $ALTIBASE_HOME/sample/SQLCLI/demo_meta1.cpp 참고 >
if (SQLTables(stmt,
NULL, 0,
NULL, 0,
NULL, 0,
NULL, 0) != SQL_SUCCESS)
{
execute_err(dbc, stmt, "SQLTables");
SQLFreeStmt(stmt, SQL_DROP);
return SQL_ERROR;
}
if (SQLBindCol(stmt, 2, SQL_C_CHAR,
schem, sizeof(schem), &schem_ind) != SQL_SUCCESS)
{
execute_err(dbc, stmt, "SQLBindCol");
SQLFreeStmt(stmt, SQL_DROP);
return SQL_ERROR;
}
if (SQLBindCol(stmt, 3, SQL_C_CHAR,
name, sizeof(name), &name_ind) != SQL_SUCCESS)
{
execute_err(dbc, stmt, "SQLBindCol");
SQLFreeStmt(stmt, SQL_DROP);
return SQL_ERROR;
}
if (SQLBindCol(stmt, 4, SQL_C_CHAR,
type, sizeof(type), &type_ind) != SQL_SUCCESS)
{
execute_err(dbc, stmt, "SQLBindCol");
SQLFreeStmt(stmt, SQL_DROP);
return SQL_ERROR;
}
while ( (rc = SQLFetch(stmt)) != SQL_NO_DATA)
{
if ( rc == SQL_ERROR )
{
execute_err(dbc, stmt, "SQLFetch");
break;
}
printf("%-40s%-40s%s\n", schem, name, type);
}