데이터를 C에서 SQL 데이터 형식으로 변환

애플리케이션이 SQLExecute 또는 SQLExecDirect를 호출하면 드라이버는 애플리케이션의 스토리지 위치에서 SQLBindParameter바인딩된 모든 매개 변수에 대한 데이터를 검색합니다. 애플리케이션이 SQLSetPos를 호출할 때 드라이버는 업데이트에 대한 데이터를 검색하거나 SQLBindCol바인딩된 열에서 작업을 추가합니다. 실행 시 데이터 매개 변수의 경우 애플리케이션은 SQLPutData를 사용하여 매개 변수 데이터를 보냅니다. 필요한 경우 드라이버는 SQLBindParameter의 ValueType 인수에 지정된 데이터 형식의 데이터를 SQLBindParameterParameterType 인수로 지정된 데이터 형식으로 변환한 다음 데이터를 데이터 원본으로 보냅니다.

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

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

Supported conversions: ODBC C to SQL data types

다음 섹션의 표에서는 드라이버 또는 데이터 원본이 데이터 원본으로 전송된 데이터를 변환하는 방법을 설명합니다. 드라이버는 모든 ODBC C 데이터 형식에서 지원하는 ODBC SQL 데이터 형식으로의 변환을 지원해야 합니다. 지정된 ODBC C 데이터 형식의 경우 테이블의 첫 번째 열에는 SQLBindParameter에서 ParameterType 인수의 법적 입력 값이 나열됩니다. 두 번째 열에는 드라이버가 데이터를 변환할 수 있는지 확인하기 위해 수행하는 테스트의 결과가 나열됩니다. 세 번째 열에는 SQLExecDirect, SQLExecute, SQLBulkOperations, SQLSetPos 또는 SQLPutData에서 각 결과에 대해 반환된 SQLSTATE가 나열됩니다. 데이터는 SQL_SUCCESS 반환되는 경우에만 데이터 원본으로 전송됩니다.

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

SQLBindParameter지정된 ParameterValuePtrStrLen_or_IndPtr 인수가 모두 null 포인터이면 해당 함수는 SQLSTATE HY009(null 포인터를 잘못 사용)를 반환합니다. 테이블에 표시되지 않지만 애플리케이션은 SQLBindParameter의 StrLen_or_IndPtr 인수가 가리키는 길이/표시기 버퍼의 값 또는 SQLPutDataStrLen_or_IndPtr 인수 값을 NULL SQL 데이터 값을 지정하는 SQL_NULL_DATA 설정합니다. (다음 항목 StrLen_or_IndPtr 인수는 APD의 SQL_DESC_OCTET_LENGTH_PTR 필드에 해당합니다.) 애플리케이션은 이러한 값을 SQL_NTS 설정하여 SQLBindParameter의 *ParameterValuePtr또는 SQLPutData의 *DataPtr(APD의 SQL_DESC_DATA_PTR 필드가 가리키는)의 값이 null로 끝나는 문자열임을 지정합니다.

테이블에는 다음 용어가 사용됩니다.

  • 데이터의 바이트 길이 - 데이터가 데이터 원본으로 전송되기 전에 잘릴지 여부와 관계없이 데이터 원본에 보낼 수 있는 SQL 데이터의 바이트 수입니다. 문자열 데이터의 경우 null 종료 문자에 대한 공간이 포함되지 않습니다.

  • 열 바이트 길이 - 데이터 원본에 데이터를 저장하는 데 필요한 바이트 수입니다.

  • 문자 바이트 길이 - 데이터를 문자 형식으로 표시하는 데 필요한 최대 바이트 수입니다. 표시 크기는 문자 단위인 반면, 문자 바이트 길이는 바이트인 것을 제외하고 표시 크기의 각 SQL 데이터 형식에 대해 정의됩니다.

  • 숫자 수 - 빼기 기호, 소수점 및 지수(필요한 경우)를 포함하여 숫자를 나타내는 데 사용되는 문자 수입니다.

  • 단어 입력
    기울이기 - SQL 문법의 요소입니다. 문법 요소의 구문은 부록 C: SQL 문법을 참조하세요.

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