SQLGetTypeInfo 함수

규칙
버전 소개: ODBC 1.0 표준 준수: ISO 92

요약
SQLGetTypeInfo 는 데이터 원본에서 지원하는 데이터 형식에 대한 정보를 반환합니다. 드라이버는 SQL 결과 집합의 형태로 정보를 반환합니다. 데이터 형식은 DDL(데이터 정의 언어) 문에서 사용하기 위한 것입니다.

Important

애플리케이션은 ALTER TABLE 및 CREATE TABLE 문에서 SQLGetTypeInfo 결과 집합의 TYPE_NAME 열에 반환된 형식 이름을 사용해야 합니다. SQLGetTypeInfo 는 DATA_TYPE 열에서 동일한 값을 가진 둘 이상의 행을 반환할 수 있습니다.

구문

  
SQLRETURN SQLGetTypeInfo(  
     SQLHSTMT      StatementHandle,  
     SQLSMALLINT   DataType);  

인수

StatementHandle
[입력] 결과 집합에 대한 문 핸들입니다.

DataType
[입력] SQL 데이터 형식입니다. 부록 D: 데이터 형식 또는 드라이버별 SQL 데이터 형식의 SQL 데이터 형식 섹션에 있는 값 중 하나여야 합니다. SQL_ALL_TYPES 모든 데이터 형식에 대한 정보를 반환하도록 지정합니다.

반품

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR 또는 SQL_INVALID_HANDLE.

진단

SQLGetTypeInfo가 SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO 반환하는 경우 SQL_HANDLE_STMT HandleTypeHandle of StatementHandle을 사용하여 SQLGetDiagRec 를 호출하여 관련 SQLSTATE 값을 가져올 수 있습니다. 다음 표에서는 SQLGetTypeInfo에서 일반적으로 반환되는 SQLSTATE 값을 나열하고 이 함수의 컨텍스트에서 각 값을 설명합니다. 표기법 "(DM)"은 드라이버 관리자가 반환한 SQLSTATE에 대한 설명 앞에 나와 있습니다. 달리 명시되지 않는 한 각 SQLSTATE 값과 연결된 반환 코드는 SQL_ERROR.

SQLSTATE Error 설명
01000 일반 경고 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
01S02 옵션 값이 변경됨 구현 작업 조건으로 인해 지정된 문 특성이 잘못되었으므로 비슷한 값이 일시적으로 대체되었습니다. (통화 SQLGetStmtAttr 을 사용하여 일시적으로 대체된 값을 결정합니다.) 커서를 닫을 때까지는 StatementHandle 에 대한 대체 값이 유효합니다. 변경할 수 있는 문 특성은 SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_KEYSET_SIZE, SQL_ATTR_MAX_LENGTH, SQL_ATTR_MAX_ROWS, SQL_ATTR_QUERY_TIMEOUT 및 SQL_ATTR_SIMULATE_CURSOR. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
08S01 통신 링크 실패 드라이버와 드라이버가 연결된 데이터 원본 간의 통신 링크는 함수가 처리를 완료하기 전에 실패했습니다.
24000 커서 상태가 잘못되었습니다. StatementHandle에서 커서가 열려 있고 SQLFetch 또는 SQLFetchScroll이 호출되었습니다. 이 오류는 SQLFetch 또는 SQLFetchScroll이 SQL_NO_DATA 반환하지 않은 경우 드라이버 관리자가 반환하며, SQLFetch 또는 SQLFetchScroll이 SQL_NO_DATA 반환한 경우 드라이버에서 반환합니다.

결과 집합이 StatementHandle에서 열렸지만 SQLFetch 또는 SQLFetchScroll이 호출되지 않았습니다.
40001 Serialization 실패 다른 트랜잭션과의 리소스 교착 상태 때문에 트랜잭션이 롤백되었습니다.
40003 문 완성을 알 수 없음 이 함수를 실행하는 동안 연결된 연결이 실패했으며 트랜잭션 상태를 확인할 수 없습니다.
HY000 일반 오류 특정 SQLSTATE가 없고 구현별 SQLSTATE가 정의되지 않은 오류가 발생했습니다. *MessageText 버퍼의 SQLGetDiagRec에서 반환된 오류 메시지는 오류와 그 원인을 설명합니다.
HY001 메모리 할당 오류 드라이버가 함수 실행 또는 완료를 지원하는 데 필요한 메모리를 할당할 수 없습니다.
HY004 잘못된 SQL 데이터 형식 DataType 인수에 지정된 값은 유효한 ODBC SQL 데이터 형식 식별자나 드라이버에서 지원하는 드라이버별 데이터 형식 식별자가 아니었습니다.
HY008 작업이 취소됨 StatementHandle대해 비동기 처리를 사용하도록 설정한 다음 함수가 호출되고 실행을 완료하기 전에 StatementHandle에서 SQLCancel 또는 SQLCancelHandle이 호출되었습니다. 그런 다음 StatementHandle에서 함수가 다시 호출되었습니다.

함수가 호출되었고 실행을 완료하기 전에 다중 스레드 애플리케이션의 다른 스레드에서 StatementHandle에서 SQLCancel 또는 SQLCancelHandle이 호출되었습니다.
HY010 함수 시퀀스 오류 (DM) StatementHandle과 연결된 연결 핸들에 대해 비동기적으로 실행되는 함수가 호출되었습니다. 이 비동기 함수는 SQLGetTypeInfo 함수가 호출되었을 때 계속 실행되었습니다.

(DM) SQLExecute, SQLExecDirect 또는 SQLMoreResults가 StatementHandle에 대해 호출되고 SQL_PARAM_DATA_AVAILABLE 반환되었습니다. 이 함수는 모든 스트리밍된 매개 변수에 대해 데이터를 검색하기 전에 호출되었습니다.

(DM) 이 함수가 아닌 비동기 실행 함수가 StatementHandle에 대해 호출되었고 이 함수가 호출되었을 때 계속 실행되고 있었습니다.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations 또는 SQLSetPos가 StatementHandle에 대해 호출되고 SQL_NEED_DATA 반환되었습니다. 이 함수는 모든 실행 시 데이터 매개 변수 또는 열에 대한 데이터를 보내기 전에 호출되었습니다.
HY013 메모리 관리 오류 메모리 조건이 낮기 때문에 기본 메모리 개체에 액세스할 수 없기 때문에 함수 호출을 처리할 수 없습니다.
HY117 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단됩니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. (DM) 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수를 참조 하세요.
HYC00 선택적 기능이 구현되지 않음 SQL_ATTR_CONCURRENCY 및 SQL_ATTR_CURSOR_TYPE 문 특성의 현재 설정 조합은 드라이버 또는 데이터 원본에서 지원되지 않았습니다.

SQL_ATTR_USE_BOOKMARKS 문 특성이 SQL_UB_VARIABLE 설정되었으며 SQL_ATTR_CURSOR_TYPE 문 특성은 드라이버가 책갈피를 지원하지 않는 커서 유형으로 설정되었습니다.
HYT00 시간 제한 만료됨 데이터 원본이 결과 집합을 반환하기 전에 쿼리 제한 시간이 만료되었습니다. 시간 제한 기간은 SQL_ATTR_QUERY_TIMEOUT SQLSetStmtAttr를 통해 설정됩니다.
HYT01 연결 제한 시간이 만료됨 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQL_ATTR_CONNECTION_TIMEOUT SQLSetConnectAttr를 통해 설정됩니다.
IM001 드라이버는 이 함수를 지원하지 않습니다. (DM) StatementHandle해당하는 드라이버는 함수를 지원하지 않습니다.
IM017 비동기 알림 모드에서 폴링을 사용할 수 없습니다. 알림 모델을 사용할 때마다 폴링이 비활성화됩니다.
IM018 이 핸들에서 이전 비동기 작업을 완료하기 위해 SQLCompleteAsync 가 호출되지 않았습니다. 핸들의 이전 함수 호출이 SQL_STILL_EXECUTING 반환하고 알림 모드가 활성화된 경우 사후 처리를 수행하고 작업을 완료하려면 핸들에서 SQLCompleteAsync 를 호출해야 합니다.

주석

SQLGetTypeInfo 는 결과를 표준 결과 집합으로 반환하고, DATA_TYPE 따라 정렬한 다음, 데이터 형식이 해당 ODBC SQL 데이터 형식에 얼마나 가깝게 매핑되는지에 따라 정렬됩니다. 데이터 원본에서 정의한 데이터 형식이 사용자 정의 데이터 형식보다 우선합니다. 따라서 정렬 순서는 반드시 일관되지는 않지만 먼저 DATA_TYPE 일반화되고 TYPE_NAME 오름차순으로 일반화될 수 있습니다. 예를 들어 INTEGER 및 COUNTER 데이터 형식을 정의한 데이터 원본, 여기서 COUNTER는 자동 증가하며 사용자 정의 데이터 형식 WHOLENUM도 정의되었다고 가정합니다. 이 값은 INTEGER, WHOLENUM 및 COUNTER 순서로 반환됩니다. 이는 WHOLENUM이 SQL_INTEGER ODBC SQL 데이터 형식에 밀접하게 매핑되는 반면 자동 증가 데이터 형식은 데이터 원본에서 지원되더라도 ODBC SQL 데이터 형식에 밀접하게 매핑되지 않기 때문입니다. 이 정보를 사용하는 방법에 대한 자세한 내용은 DDL 문을 참조 하세요.

DataType 인수가 드라이버에서 지원하는 ODBC 버전에 유효하지만 드라이버에서 지원하지 않는 데이터 형식을 지정하면 빈 결과 집합이 반환됩니다.

참고 항목

ODBC 카탈로그 함수의 일반 사용, 인수 및 반환된 데이터에 대한 자세한 내용은 카탈로그 함수를 참조 하세요.

ODBC 3의 경우 다음 열의 이름이 바뀌었습니다.x. 열 이름 변경은 애플리케이션이 열 번호로 바인딩되므로 이전 버전과의 호환성에 영향을 미치지 않습니다.

ODBC 2.0 열 ODBC 3.x
PRECISION COLUMN_SIZE
돈을 FIXED_PREC_SCALE
AUTO_INCREMENT AUTO_UNIQUE_VALUE

ODBC 3용 SQLGetTypeInfo에서 반환한 결과 집합에 다음 열이 추가되었습니다.x:

  • SQL_DATA_TYPE

  • INTERVAL_PRECISION

  • SQL_DATETIME_SUB

  • NUM_PREC_RADIX

다음 표에서는 결과 집합의 열을 나열합니다. 드라이버에서 열 19(INTERVAL_PRECISION) 이외의 추가 열을 정의할 수 있습니다. 애플리케이션은 명시적 서수 위치를 지정하지 않고 결과 집합의 끝에서 카운트다운하여 드라이버별 열에 액세스할 수 있어야 합니다. 자세한 내용은 카탈로그 함수에서 반환된 데이터를 참조 하세요.

참고 항목

SQLGetTypeInfo 는 모든 데이터 형식을 반환하지 않을 수 있습니다. 예를 들어 드라이버는 사용자 정의 데이터 형식을 반환하지 않을 수 있습니다. 애플리케이션은 SQLGetTypeInfo에서 반환되는지 여부에 관계없이 유효한 데이터 형식을 사용할 수 있습니다. SQLGetTypeInfo에서 반환되는 데이터 형식은 데이터 원본에서 지원하는 형식입니다. DDL(데이터 정의 언어) 문에서 사용하기 위한 것입니다. 드라이버는 SQLGetTypeInfo에서 반환된 형식 이외의 데이터 형식을 사용하여 결과 집합 데이터를 반환할 수 있습니다. 카탈로그 함수에 대한 결과 집합을 만들 때 드라이버는 데이터 원본에서 지원하지 않는 데이터 형식을 사용할 수 있습니다.

열 이름 Column

번호
데이터 형식 주석
TYPE_NAME(ODBC 2.0) 6 Varchar not NULL 데이터 원본 종속 데이터 형식 이름; 예를 들어 "CHAR()", "VARCHAR()", "MONEY", "LONG VARBINARY" 또는 "CHAR ( ) FOR BIT DATA"와 같습니다. 애플리케이션은 CREATE TABLE 및 ALTER TABLE 문에서 이 이름을 사용해야 합니다.
DATA_TYPE(ODBC 2.0) 2 Smallint not NULL SQL 데이터 형식입니다. ODBC SQL 데이터 형식 또는 드라이버별 SQL 데이터 형식일 수 있습니다. 날짜/시간 또는 간격 데이터 형식의 경우 이 열은 간결한 데이터 형식(예: SQL_TYPE_TIME 또는 SQL_INTERVAL_YEAR_TO_MONTH)을 반환합니다. 유효한 ODBC SQL 데이터 형식 목록은 부록 D: 데이터 형식의 SQL 데이터 형식을 참조하세요. 드라이버별 SQL 데이터 형식에 대한 자세한 내용은 드라이버 설명서를 참조하세요.
COLUMN_SIZE(ODBC 2.0) 3 Integer 서버에서 이 데이터 형식에 대해 지원하는 최대 열 크기입니다. 숫자 데이터의 경우 최대 정밀도입니다. 문자열 데이터의 경우 문자의 길이입니다. datetime 데이터 형식의 경우 문자열 표현의 문자 길이입니다(소수 자릿수 초 구성 요소의 최대 허용 전체 자릿수 가정). 열 크기를 적용할 수 없는 데이터 형식에 대해 NULL이 반환됩니다. 간격 데이터 형식의 경우 간격 리터럴의 문자 표현에 있는 문자 수입니다(간격 선행 정밀도에 정의된 대로, 부록 D: 데이터 형식의 간격 데이터 형식 길이 참조).

열 크기에 대한 자세한 내용은 열 크기, 10진수, 8진수 길이 전송 및 부록 D: 데이터 형식의 표시 크기를 참조하세요.
LITERAL_PREFIX(ODBC 2.0) 4 Varchar 리터럴 접두사를 지정하는 데 사용되는 문자 또는 문자 예를 들어 문자 데이터 형식의 경우 작은따옴표(') 또는 이진 데이터 형식의 경우 0x입니다. 리터럴 접두사를 적용할 수 없는 데이터 형식에 대해 NULL이 반환됩니다.
LITERAL_SUFFIX(ODBC 2.0) 5 Varchar 리터럴을 종료하는 데 사용되는 문자 또는 문자 예를 들어 문자 데이터 형식에 대한 작은따옴표(')입니다. 리터럴 접미사를 적용할 수 없는 데이터 형식에 대해 NULL이 반환됩니다.
CREATE_PARAMS(ODBC 2.0) 6 Varchar TYPE_NAME 필드에 반환되는 이름을 사용할 때 애플리케이션이 괄호로 지정할 수 있는 각 매개 변수에 해당하는 쉼표로 구분된 키워드 목록입니다. 목록의 키워드는 길이, 전체 자릿수 또는 소수 자릿수 중 어느 것이든 될 수 있습니다. 구문에서 사용해야 하는 순서대로 표시됩니다. 예를 들어 DECIMAL에 대한 CREATE_PARAMS "precision,scale"입니다. VARCHAR에 대한 CREATE_PARAMS "길이"가 같습니다. 데이터 형식 정의에 대한 매개 변수가 없으면 NULL이 반환됩니다. 예를 들어 INTEGER입니다.

드라이버는 사용되는 국가/지역의 언어로 CREATE_PARAMS 텍스트를 제공합니다.
NULLABLE(ODBC 2.0) 7 Smallint not NULL 데이터 형식이 NULL 값을 허용하는지 여부:

데이터 형식이 NULL 값을 허용하지 않는 경우 SQL_NO_NULLS.

데이터 형식이 NULL 값을 허용하는지 SQL_NULLABLE.

열이 NULL 값을 허용하는지 여부를 알 수 없는 경우 SQL_NULLABLE_UNKNOWN.
CASE_SENSITIVE(ODBC 2.0) 8 Smallint not NULL 데이터 정렬 및 비교에서 문자 데이터 형식이 대/소문자를 구분하는지 여부:

데이터 형식이 문자 데이터 형식이고 대/소문자를 구분하는지 SQL_TRUE.

데이터 형식이 문자 데이터 형식이 아니거나 대/소문자를 구분하지 않는 경우 SQL_FALSE.
SEARCHABLE(ODBC 2.0) 9 Smallint not NULL WHERE 절에서 데이터 형식을 사용하는 방법:

WHERE 절에서 열을 사용할 수 없는 경우 SQL_PRED_NONE. ODBC 2의 SQL_UNSEARCHABLE 값과 동일합니다.x.)

열이 WHERE 절에서만 사용할 수 있지만 LIKE 조건자에서만 사용할 수 있는지 SQL_PRED_CHAR. ODBC 2의 SQL_LIKE_ONLY 값과 동일합니다.x.)

SQL_PRED_BASIC LIKE(비교, 정량화된 비교, BETWEEN, DISTINCT, IN, MATCHUNIQUE)를 제외한 모든 비교 연산자가 있는 WHERE 절에서 열을 사용할 수 있는지 여부를 나타냅니다. ODBC 2의 SQL_ALL_EXCEPT_LIKE 값과 동일합니다.x.)

비교 연산자가 있는 WHERE 절에서 열을 사용할 수 있는지 SQL_SEARCHABLE.
UNSIGNED_ATTRIBUTE(ODBC 2.0) 10 Smallint 데이터 형식이 서명되지 않았는지 여부:

데이터 형식이 서명되지 않은 경우 SQL_TRUE.

데이터 형식이 서명되었는지 SQL_FALSE.

특성이 데이터 형식에 적용되지 않거나 데이터 형식이 숫자가 아닌 경우 NULL이 반환됩니다.
FIXED_PREC_SCALE(ODBC 2.0) 11 Smallint not NULL 데이터 형식에 고정 정밀도 및 크기 조정(데이터 원본별)이 미리 정의되어 있는지 여부(예: money 데이터 형식)

고정 정밀도 및 소수 자릿수가 미리 정의된 경우 SQL_TRUE.

미리 정의된 고정 정밀도 및 소수 자릿수가 없는 경우 SQL_FALSE.
AUTO_UNIQUE_VALUE(ODBC 2.0) 12 Smallint 데이터 형식이 자동 증가되는지 여부:

데이터 형식이 자동 증가되는지 SQL_TRUE.

데이터 형식이 자동으로 증가하지 않는지 SQL_FALSE.

특성이 데이터 형식에 적용되지 않거나 데이터 형식이 숫자가 아닌 경우 NULL이 반환됩니다.

애플리케이션은 이 특성이 있는 열에 값을 삽입할 수 있지만 일반적으로 열의 값을 업데이트할 수는 없습니다.

자동 증가 열에 삽입하면 삽입 시 고유한 값이 열에 삽입됩니다. 증분은 정의되지 않았지만 데이터 원본에 따라 다릅니다. 애플리케이션은 자동 증가 열이 특정 지점에서 시작되거나 특정 값으로 증가한다고 가정해서는 안 됩니다.
LOCAL_TYPE_NAME(ODBC 2.0) 13 Varchar 데이터 형식의 데이터 원본 종속 이름의 지역화된 버전입니다. 지역화된 이름이 데이터 원본에서 지원되지 않는 경우 NULL이 반환됩니다. 이 이름은 대화 상자와 같이 표시 전용입니다.
MINIMUM_SCALE(ODBC 2.0) 14 Smallint 데이터 원본에 대한 데이터 형식의 최소 크기입니다. 데이터 형식에 고정 눈금이 있는 경우 MINIMUM_SCALE 열과 MAXIMUM_SCALE 열 모두에 이 값이 포함됩니다. 예를 들어 SQL_TYPE_TIMESTAMP 열은 소수 자릿수 초 동안 고정된 배율을 가질 수 있습니다. 크기 조정을 적용할 수 없는 경우 NULL이 반환됩니다. 자세한 내용은 열 크기, 10진수, 8진수 전송 길이 및 부록 D: 데이터 형식의 표시 크기를 참조하세요.
MAXIMUM_SCALE(ODBC 2.0) 15 Smallint 데이터 원본에 있는 데이터 형식의 최대 크기입니다. 크기 조정을 적용할 수 없는 경우 NULL이 반환됩니다. 최대 소수 자릿수가 데이터 원본에서 별도로 정의되지 않고 대신 최대 전체 자릿수와 동일하게 정의되는 경우 이 열에는 COLUMN_SIZE 열과 동일한 값이 포함됩니다. 자세한 내용은 열 크기, 10진수, 8진수 전송 길이 및 부록 D: 데이터 형식의 표시 크기를 참조하세요.
SQL_DATA_TYPE(ODBC 3.0) 16 NULL이 아닌 Smallint 설명자의 SQL_DESC_TYPE 필드에 나타나는 SQL 데이터 형식의 값입니다. 이 열은 간격 및 날짜/시간 데이터 형식을 제외하고 DATA_TYPE 열과 동일합니다.

간격 및 날짜/시간 데이터 형식의 경우 결과 집합의 SQL_DATA_TYPE 필드는 SQL_INTERVAL 또는 SQL_DATETIME 반환하고, SQL_DATETIME_SUB 필드는 특정 간격 또는 날짜/시간 데이터 형식에 대한 하위 코드를 반환합니다. (참조) 부록 D: 데이터 형식입니다.)
SQL_DATETIME_SUB(ODBC 3.0) 17 Smallint SQL_DATA_TYPE 값이 SQL_DATETIME 또는 SQL_INTERVAL 경우 이 열에는 datetime/interval 하위 코드가 포함됩니다. datetime 및 interval 이외의 데이터 형식의 경우 이 필드는 NULL입니다.

간격 또는 날짜/시간 데이터 형식의 경우 결과 집합의 SQL_DATA_TYPE 필드는 SQL_INTERVAL 또는 SQL_DATETIME 반환하고, SQL_DATETIME_SUB 필드는 특정 간격 또는 날짜/시간 데이터 형식에 대한 하위 코드를 반환합니다. (참조) 부록 D: 데이터 형식입니다.)
NUM_PREC_RADIX(ODBC 3.0) 18 Integer 데이터 형식이 근사 숫자 형식인 경우 이 열에는 COLUMN_SIZE 여러 비트를 지정함을 나타내는 값 2가 포함됩니다. 정확한 숫자 형식의 경우 이 열에는 COLUMN_SIZE 소수 자릿수를 지정함을 나타내는 값 10이 포함됩니다. 그렇지 않으면 이 열은 NULL입니다.
INTERVAL_PRECISION(ODBC 3.0) 19 Smallint 데이터 형식이 간격 데이터 형식인 경우 이 열에는 간격 선행 전체 자릿수의 값이 포함됩니다. (참조) 부록 D: 데이터 형식의 간격 데이터 형식 정밀도 입니다.) 그렇지 않으면 이 열이 NULL입니다.

특성 정보는 데이터 형식 또는 결과 집합의 특정 열에 적용할 수 있습니다. SQLGetTypeInfo 는 데이터 형식과 연결된 특성에 대한 정보를 반환합니다 .SQLColAttribute 는 결과 집합의 열과 연결된 특성에 대한 정보를 반환합니다.

추가 정보 참조
결과 집합의 열에 버퍼 바인딩 SQLBindCol 함수
문 처리 취소 SQLCancel 함수
결과 집합의 열에 대한 정보 반환 SQLColAttribute 함수
데이터 블록을 가져오거나 결과 집합을 스크롤합니다. SQLFetchScroll 함수
단일 행 또는 데이터 블록을 정방향으로 가져오기 SQLFetch 함수
드라이버 또는 데이터 원본에 대한 정보 반환 SQLGetInfo 함수

참고 항목

ODBC API 참조
ODBC 헤더 파일