데이터를 C 데이터 형식으로 데이터 변환

애플리케이션이 SQLFetch, SQLFetchScroll 또는 SQLGetData를 호출하면 드라이버는 데이터 원본에서 데이터를 검색합니다. 필요한 경우 드라이버가 검색한 데이터 형식에서 SQLBindCol 또는 SQLGetData의 TargetType 인수로 지정된 데이터 형식으로 데이터를 변환합니다. 마지막으로 SQLBindCol 또는 SQLGetData(및 ARD의 SQL_DESC_DATA_PTR 필드)에서 TargetValuePtr 인수가 가리키는 위치에 데이터를 저장합니다.

다음 표에서는 ODBC SQL 데이터 형식에서 ODBC C 데이터 형식으로의 지원되는 변환을 보여 줍니다. 채워진 원은 SQL 데이터 형식에 대한 기본 변환을 나타냅니다(TargetType이 SQL_C_DEFAULT 때 데이터가 변환되는 C 데이터 형식). 속이 빈 원은 지원되는 변환을 나타냅니다.

ODBC 2.x 드라이버로 작업하는 ODBC 3.x 애플리케이션의 경우 드라이버별 데이터 형식에서의 변환이 지원되지 않을 수 있습니다.

변환된 데이터의 형식은 Windows 국가/지역 설정의 영향을 받지 않습니다.

다음 섹션의 표에서는 드라이버 또는 데이터 원본이 데이터 원본에서 검색된 데이터를 변환하는 방법을 설명합니다. 드라이버는 지원하는 ODBC SQL 데이터 형식에서 모든 ODBC C 데이터 형식으로의 변환을 지원해야 합니다. 지정된 ODBC SQL 데이터 형식의 경우 테이블의 첫 번째 열에는 SQLBindColSQLGetDataTargetType 인수에 대한 법적 입력 값이 나열됩니다. 두 번째 열에는 SQLBindCol 또는 SQLGetData지정된 BufferLength 인수를 사용하는 테스트 결과가 나열됩니다. 이 인수는 드라이버가 데이터를 변환할 수 있는지 여부를 결정하기 위해 수행합니다. 각 결과에 대해 세 번째 및 네 번째 열에는 TargetValuePtr로 지정된 버퍼에 배치된 값과 드라이버가 데이터를 변환하려고 시도한 후 SQLBindCol 또는 SQLGetData지정된 StrLen_or_IndPtr 인수가 나열됩니다. (다음 항목 StrLen_or_IndPtr 인수는 ARD의 SQL_DESC_OCTET_LENGTH_PTR 필드에 해당합니다.) 마지막 열에는 SQLFetch, SQLFetchScroll 또는 SQLGetData에서 각 결과에 대해 반환된 SQLSTATE가 나열됩니다.

SQLBindCol 또는 SQLGetData의 TargetType 인수에 지정된 ODBC SQL 데이터 형식에 대한 테이블에 표시되지 않는 ODBC C 데이터 형식에 대한 식별자가 포함되어 있으면 SQLFetch, SQLFetchScroll 또는 SQLGetData는 SQLSTATE 07006(제한된 데이터 형식 특성 위반)을 반환합니다. TargetType 인수에 드라이버별 SQL 데이터 형식에서 ODBC C 데이터 형식으로의 변환을 지정하는 식별자가 포함되어 있고 이 변환이 드라이버, SQLFetch, SQLFetchScroll 또는 SQLGetData에서 지원되지 않는 경우 SQLSTATE HYC00(선택적 기능은 구현되지 않음)이 반환됩니다.

테이블에 표시되지 않지만 드라이버는 SQL 데이터 값이 NULL일 때 StrLen_or_IndPtr 인수로 지정된 버퍼에서 SQL_NULL_DATA 반환합니다. 데이터를 검색하기 위해 여러 번의 호출이 있을 때 StrLen_or_IndPtr 사용에 대한 설명은 SQLGetData 함수 설명을 참조하세요. SQL 데이터를 문자 C 데이터로 변환하는 경우 *StrLen_or_IndPtr 반환된 문자 수는 null 종료 바이트를 포함하지 않습니다. TargetValuePtr이 null 포인터인 경우 SQLGetData는 SQLSTATE HY009(Null 포인터를 잘못 사용함)를 반환합니다. SQLBindCol에서 열을 바인딩 해제합니다.

테이블에서 사용되는 용어 및 규칙은 다음과 같습니다.

  • 데이터의 바이트 길이는 *TargetValuePtr에서 반환할 수 있는 C 데이터의 바이트 수이며, 데이터가 애플리케이션에 반환되기 전에 잘릴지 여부입니다. 문자열 데이터의 경우 null 종료 문자에 대한 공간이 포함되지 않습니다.

  • 문자 바이트 길이 는 데이터를 문자 형식으로 표시하는 데 필요한 총 바이트 수입니다. 표시 크기가 문자로 표시되는 동안 문자 바이트 길이가 바이트 단위라는 점을 제외하고 표시 크기 섹션의 각 C 데이터 형식에 대해 정의됩니다.

  • 기울여진 단어는 SQL 문법의 함수 인수 또는 요소를 나타냅니다. 문법 요소의 구문은 부록 C: SQL 문법을 참조하세요.

이 섹션에서는 다음 항목을 다룹니다.