다음을 통해 공유


SQLGetTypeInfo를 사용하여 데이터 형식 정보 검색

기본 SQL 데이터 형식에서 ODBC 형식 식별자에 대한 매핑은 근사치이므로 ODBC는 드라이버가 데이터 원본의 각 SQL 데이터 형식을 완전히 설명할 수 있는 함수(SQLGetTypeInfo)를 제공합니다. 이 함수는 결과 집합을 반환하며, 각 행은 이름, 형식 식별자, 정밀도, 소수 자릿수 및 null 허용 여부와 같은 단일 데이터 형식의 특성을 설명합니다.

이 정보는 일반적으로 사용자가 테이블을 만들고 변경할 수 있도록 하는 일반 애플리케이션에서 사용됩니다. 이러한 애플리케이션은 SQLGetTypeInfo를 호출하여 데이터 형식 정보를 검색한 다음, 그 중 일부 또는 전부를 사용자에게 표시합니다. 이러한 애플리케이션은 다음 두 가지를 알고 있어야 합니다.

  • 둘 이상의 SQL 데이터 형식이 단일 형식 식별자에 매핑될 수 있으므로 사용할 데이터 형식을 결정하기 어려울 수 있습니다. 이 문제를 해결하기 위해 결과 집합은 먼저 형식 식별자별로 정렬되고, 두 번째 결과 집합은 형식 식별자의 정의에 근접하여 정렬됩니다. 또한 데이터 원본 정의 데이터 형식이 사용자 정의 데이터 형식보다 우선합니다. 예를 들어 데이터 원본이 COUNTER가 자동 증가한다는 점을 제외하고 INTEGER 및 COUNTER 데이터 형식을 동일하게 정의한다고 가정합니다. 또한 사용자 정의 형식 WHOLENUM이 INTEGER의 동의어라고 가정합니다. 이러한 각 형식은 SQL_INTEGER 매핑합니다. SQLGetTypeInfo 결과 집합에서 INTEGER가 먼저 나타나고 그 다음에는 WHOLENUM 및 COUNTER가 표시됩니다. WHOLENUM은 사용자 정의이기 때문에 INTEGER 이후에 나타나지만 COUNTER 앞에는 SQL_INTEGER 형식 식별자의 정의와 더 밀접하게 일치하기 때문입니다.

  • ODBC는 CREATE TABLE 및 ALTER TABLE 문에 사용할 데이터 형식 이름을 정의하지 않습니다. 대신 애플리케이션은 SQLGetTypeInfo에서 반환된 결과 집합의 TYPE_NAME 열에 반환된 이름을 사용해야 합니다. 그 이유는 대부분의 SQL이 DBMS에 따라 크게 달라지지는 않지만 데이터 형식 이름은 매우 다양하기 때문입니다. 드라이버가 SQL 문을 구문 분석하고 표준 데이터 형식 이름을 DBMS 관련 데이터 형식 이름으로 바꾸도록 강제하는 대신, ODBC를 사용하려면 애플리케이션에서 DBMS 관련 이름을 먼저 사용해야 합니다.

SQLGetTypeInfo가 애플리케이션에서 발생할 수 있는 모든 데이터 형식을 반드시 설명하는 것은 아닙니다. 특히 결과 집합에는 데이터 원본에서 직접 지원하지 않는 데이터 형식이 포함될 수 있습니다. 예를 들어 카탈로그 함수에서 반환된 결과 집합에 있는 열의 데이터 형식은 ODBC에서 정의되며 이러한 데이터 형식은 데이터 원본에서 지원되지 않을 수 있습니다. 결과 집합에서 데이터 형식의 특성을 확인하기 위해 애플리케이션은 SQLColAttribute를 호출 합니다.