SQLDriverToDataSource 함수
SQLDriverToDataSource 는 ODBC 드라이버에 대한 번역을 지원합니다. 이 함수는 ODBC 사용 애플리케이션에서 호출되지 않습니다. 애플리케이션은 SQLSetConnectAttr를 통해 번역을 요청합니다. SQLSetConnectAttr에 지정된 ConnectionHandle과 연결된 드라이버는 지정된 DLL을 호출하여 드라이버에서 데이터 원본으로 흐르는 모든 데이터를 변환합니다. 기본 변환 DLL은 ODBC 초기화 파일에서 지정할 수 있습니다.
구문
BOOL SQLDriverToDataSource(
UDWORD fOption,
SWORD fSqlType,
PTR rgbValueIn,
SDWORD cbValueIn,
PTR rgbValueOut,
SDWORD cbValueOutMax,
SDWORD * pcbValueOut,
UCHAR * szErrorMsg,
SWORD cbErrorMsgMax,
SWORD * pcbErrorMsg);
인수
fOption
[입력] 옵션 값입니다.
fSqlType
[입력] ODBC SQL 데이터 형식입니다. 이 인수는 rgbValueIn을 데이터 원본에서 허용 가능한 양식으로 변환하는 방법을 드라이버에 알려줍니다. 유효한 SQL 데이터 형식 목록은 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입니다.
주석
드라이버는 SQLDriverToDataSource를 호출하여 드라이버에서 데이터 원본으로 전달되는 모든 데이터(SQL 문, 매개 변수 등)를 변환합니다. 번역 DLL은 데이터의 형식 및 번역 DLL의 목적에 따라 일부 데이터를 번역하지 않을 수 있습니다. 예를 들어 한 코드 페이지에서 다른 코드 페이지로 문자 데이터를 변환하는 DLL은 모든 숫자 및 이진 데이터를 무시합니다.
fOption 값은 SQL_ATTR_TRANSLATE_OPTION 특성을 사용하여 SQLSetConnectAttr를 호출하여 지정된 vParam 값으로 설정됩니다. 지정된 변환 DLL에 대한 특정 의미를 갖는 32비트 값입니다. 예를 들어 특정 문자 집합 번역을 지정할 수 있습니다.
rgbValueIn 및 rgbValueOut에 대해 동일한 버퍼를 지정하면 버퍼의 데이터 변환이 수행됩니다.
cbValueIn, cbValueOutMax 및 pcbValueOut은 SDWORD 형식이지만 SQLDriverToDataSource가 반드시 큰 포인터를 지원하지는 않습니다.
SQLDriverToDataSource가 FALSE를 반환하는 경우 변환 중에 데이터 잘림이 발생했을 수 있습니다. pcbValueOut(출력 버퍼에서 반환할 수 있는 바이트 수)이 cbValueOutMax(출력 버퍼의 길이)보다 크면 잘림이 발생했습니다. 드라이버는 잘림이 허용되는지 여부를 결정해야 합니다. 잘림이 발생하지 않으면 SQLDriverToDataSource는 다른 오류로 인해 FALSE를 반환했습니다. 두 경우 모두 szErrorMsg에서 특정 오류 메시지가 반환됩니다.
데이터 번역에 대한 자세한 내용은 번역 DLL을 참조 하세요.
관련 함수
추가 정보 | 참조 |
---|---|
데이터 원본에서 반환된 데이터 변환 | SQLDataSourceToDriver |
연결 특성 설정 반환 | SQLGetConnectAttr |
연결 특성 설정 | SQLSetConnectAttr |