다음을 통해 공유


SQLDataSourceToDriver 함수

ODBC 드라이버에 대한 SQLDataSourceToDriver 지원 변환 이 함수는 ODBC 사용 애플리케이션에서 호출되지 않습니다. 애플리케이션은 SQLSetConnectAttr를 통해 번역을 요청합니다. SQLSetConnectAttr지정된 ConnectionHandle연결된 드라이버는 지정된 DLL을 호출하여 데이터 원본에서 드라이버로 흐르는 모든 데이터를 변환합니다. 기본 변환 DLL은 ODBC 초기화 파일에서 지정할 수 있습니다.

구문

  
BOOL SQLDataSourceToDriver(  
     UDWORD     fOption,  
     SWORD      fSqlType,  
     PTR        rgbValueIn,  
     SDWORD     cbValueIn,  
     PTR        rgbValueOut,  
     SDWORD     cbValueOutMax,  
     SDWORD *   pcbValueOut,  
     UCHAR *    szErrorMsg,  
     SWORD      cbErrorMsgMax,  
     SWORD *    pcbErrorMsg);  

인수

fOption
[입력] 옵션 값입니다.

fSqlType
[입력] SQL 데이터 형식입니다. 이 인수는 rgbValueIn을 애플리케이션에서 허용 가능한 양식으로 변환하는 방법을 드라이버에 알려줍니다. 유효한 SQL 데이터 형식 목록은 부록 D: 데이터 형식의 SQL 데이터 형식 섹션을 참조하세요.

rgbValueIn
[입력] 번역할 값입니다.

cbValueIn
[입력] rgbValueIn의 길이입니다.

rgbValueOut
[출력] 번역의 결과입니다.

참고 항목

변환 DLL은 이 값을 null로 종료하지 않습니다.

cbValueOutMax
[입력] rgbValueOut길이입니다.

pcbValueOut
[출력] rgbValueOut에서 반환할 수 있는 총 바이트 수(null 종료 바이트 제외)입니다.

문자 또는 이진 데이터의 경우 cbValueOutMax보다 크거나 같으면 rgbValueOut의 데이터가 cbValueOutMax 바이트로 잘립니다.

다른 모든 데이터 형식의 경우 cbValueOutMax 값이 무시되고 변환 DLL은 rgbValueOut크기가 fSqlType으로 지정된 SQL 데이터 형식의 기본 C 데이터 형식 크기라고 가정합니다.

pcbValueOut 인수는 null 포인터일 수 있습니다.

szErrorMsg
[출력] 오류 메시지의 스토리지에 대한 포인터입니다. 변환에 실패하지 않는 한 빈 문자열입니다.

cbErrorMsgMax
[입력] szErrorMsg길이입니다.

pcbErrorMsg
[출력] szErrorMsg에서 반환할 수 있는 총 바이트 수(null 종료 바이트 제외)에 대한 포인터입니다. cbErrorMsg보다 크거나 같은 경우 szErrorMsg의 데이터는 null 종료 문자를 뺀 cbErrorMsgMax잘립니다. pcbErrorMsg 인수는 null 포인터일 수 있습니다.

반품

번역에 성공하면 TRUE, 번역에 실패한 경우 FALSE입니다.

주석

드라이버는 SQLDataSourceToDriver를 호출하여 데이터 원본에서 드라이버로 전달되는 alldata(결과 집합 데이터, 테이블 이름, 행 수, 오류 메시지 등)를 변환합니다. 변환 DLL은 데이터의 형식 및 변환 DLL의 목적에 따라 일부 데이터를 번역하지 않을 수 있습니다. 예를 들어 한 코드 페이지에서 다른 코드 페이지로 문자 데이터를 변환하는 DLL은 모든 숫자 및 이진 데이터를 무시합니다.

fOption은 SQL_ATTR_TRANSLATE_OPTION 특성을 사용하여 SQLSetConnectAttr를 호출하여 지정된 vParam으로 설정됩니다. 지정된 변환 DLL에 대한 특정 의미를 갖는 32비트 값입니다. 예를 들어 특정 문자 집합 번역을 지정할 수 있습니다.

rgbValueInrgbValueOut대해 동일한 버퍼를 지정하면 버퍼의 데이터 변환이 수행됩니다.

cbValueIn, cbValueOutMaxpcbValueOut은 SDWORD 형식이지만 SQLDataSourceToDriver가 반드시 큰 포인터를 지원하지는 않습니다.

SQLDataSourceToDriver가 FALSE를 반환하는 경우 변환 중에 데이터 잘림이 발생했을 수 있습니다. pcbValueOut(출력 버퍼에서 반환할 수 있는 바이트 수)이 cbValueOutMax(출력 버퍼의 길이)보다 크면 잘림이 발생했습니다. 드라이버는 잘림이 허용되는지 여부를 결정해야 합니다. 잘림이 발생하지 않으면 SQLDataSourceToDriver다른 오류로 인해 FALSE를 반환했습니다. 두 경우 모두 szErrorMsg에서 특정 오류 메시지가 반환됩니다.

데이터 번역에 대한 자세한 내용은 번역 DLL을 참조 하세요.

추가 정보 참조
데이터 원본으로 전송되는 데이터 변환 SQLDriverToDataSource
연결 특성 설정 반환 SQLGetConnectAttr
연결 특성 설정 SQLSetConnectAttr