콘텐츠로 이동

SQLSpecialColumns

SQLSpecialColumns#

명시된 테이블 내의 열들에 대해 다음 정보를 검색한다.

  • 테이블의 행을 유일하게 식별하는 (예: 프라이머리 키) 최적의 열 집합

  • 행의 어떤 값이 트랜잭션에 의해 갱신될 때 자동으로 갱신되는 열들

Unicode SQLSpecialColumnsW() 동작은 SQLSpecialColumns()와 동일하다.

구 문#

SQLRETURN  SQLSpecialColumns (
    SQLHSTMT        stmt,
    SQLSMALLINT     fColType,
    SQLCHAR *       szTableQual,
    SQLSMALLINT     cbTableQual,
    SQLCHAR *       szTableOwner,
    SQLSMALLINT     cbTableOwner,
    SQLCHAR *       szTableName,
    SQLSMALLINT     cbTableName,
    SQLSMALLINT     fScope,
    SQLSMALLINT     fNullable );

인 자#

자료유형 인자 사용 설명
SQLHSTMT stmt 입력 명령문 핸들
SQLSMALLINT fColType 입력 반환할 열의 타입. SQL_BEST_ROWID: 열(들)의 값들을 검색 함으로서 테이블의 행을 유일하게 식별하는 최적의 열들을 반환
SQLCHAR * szTableQual 입력 항상 NULL이 반환
SQLSMALLINT cbTableQual 입력 *szTableQual의 문자 개수
SQLCHAR * szTableOwner 입력 스키마 이름
SQLSMALLINT cbTableOwner 입력 *szTableOwner의 문자 개수
SQLCHAR * szTableName 입력 테이블 이름, null pointer일 수 없다.
SQLSMALLINT cbTableName 입력 *szTableName의 문자 개수
SQLSMALLINT fScope 입력 사용 안함
SQLSMALLINT fNullable 입력 사용 안함. (프라이머리 키에 해당하는 열을 반환하므로 NULL을 허용하지 않음)

결괏값#

SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_INVALID_HANDLE
SQL_ERROR

설 명#

fColType이 SQL_BEST_ROWID 일 때, SQLSpecialColumns()는 테이블의 각 행을 유일하게 식별하는 열(들)을 반환한다. 이러한 열들은 select 목록이나 WHERE 절에서 사용될 수 있다.

테이블의 열들에 대한 다양한 정보를 반환하는데 사용되는 SQLColumns()는 행을 유일하게 식별하는 열들이나 또는 행의 어떤 값이 트랜잭션에 의해 갱신될 때 자동으로 갱신되는 열들을 반드시 반환하지는 않기 때문에 SQLSpecialColumns()는 이러한 열들을 반환하는데 사용한다.

테이블의 각 행을 유일하게 식별하는 열들이 없다면, SQLSpecialColumns()는 행들이 없는 행집합을 반환한다. 명령문상에서 SQLFetch()에 대한 후속 호출은 SQL_NO_DATA를 반환한다.

fColType, fScope, fNullable 인자들이 DB에서 지원되지 않는 특징들을 명시하면 SQLSpecialColumns()는 빈 결과 집합을 반환한다.

이름 번호 자료유형 설명
SCOPE 1 SMALLINT SQL_SCOPE_SESSION 값이 2로 고정
COLUMN_NAME 2 VARCHAR (NOT NULL) 열 이름. Altibase CLI 드라이버는 이름을 갖지 않은 열에 대해 빈 문자열을 반환한다.
DATA_TYPE 3 SMALLINT (NOT NULL) SQL 데이터 타입
TYPE_NAME 4 VARCHAR (NOT NULL) DATA_TYPE에 대응하는 데이터 타입의 이름을 나타내는 문자 스트링
COLUMN_SIZE 5 INTEGER 열의 크기. 열의 크기가 적합치 않으면 NULL 이 반환됨
BUFFER_LENGTH 6 INTEGER 자료를 저장하는 최대 바이트
DECIMAL_DIGITS 7 SMALLINT 열의 소수자리 수, 소수자리 수를 적용할 수 없는 데이터 타입은 널이 반환
PSEUDO_COLUMN 8 SMALLINT 문자나 바이너리 데이터 타입 열의 최대 자릿수. 이외의 데이터 타입일 경우 널이 반환

진 단#

SQLSTATE 설명 부연설명
08S01 통신 회선 장애 Altibase CLI 드라이버와 DB간에 함수 처리가 완료되기 전에 통신 회선 실패
HY009 유효하지 않은 인자 사용 (null pointer) szTableName이 null pointer 임

관련 함수#

SQLBindCol
SQLColumns
SQLFetch
SQLPrimaryKeys

예 제#

< $ALTIBASE_HOME/sample/SQLCLI/demo_meta7.cpp 참고 >

if (SQLSpecialColumns(stmt, 0,
                          NULL, 0,
                          NULL, 0,
                          "DEMO_META7", SQL_NTS,
                          NULL, 0) != SQL_SUCCESS)
{
    execute_err(dbc, stmt, "SQLColumns");
      SQLFreeStmt(stmt, SQL_DROP);
      return SQL_ERROR;
}

  SQLBindCol(stmt, 2, SQL_C_CHAR, szColumnName, STR_LEN, &cbColumnName);
  SQLBindCol(stmt, 3, SQL_C_SSHORT, &DataType, 0, &cbDataType);
  SQLBindCol(stmt, 4, SQL_C_CHAR, szTypeName, STR_LEN, &cbTypeName);
  SQLBindCol(stmt, 5, SQL_C_SLONG, &ColumnSize, 0, &cbColumnSize);
  SQLBindCol(stmt, 6, SQL_C_SLONG, &BufferLength, 0, &cbBufferLength);
  SQLBindCol(stmt, 7, SQL_C_SSHORT, &DecimalDigits, 0, &cbDecimalDigits);