SQLSetDescRec 함수
규칙
도입된 버전: ODBC 3.0 표준 준수: ISO 92
요약
SQLSetDescRec 함수는 열 또는 매개 변수 데이터에 바인딩된 데이터 형식 및 버퍼에 영향을 주는 여러 설명자 필드를 설정합니다.
통사론
SQLRETURN SQLSetDescRec(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT Type,
SQLSMALLINT SubType,
SQLLEN Length,
SQLSMALLINT Precision,
SQLSMALLINT Scale,
SQLPOINTER DataPtr,
SQLLEN * StringLengthPtr,
SQLLEN * IndicatorPtr);
인수
DescriptorHandle
[입력] 설명자 핸들입니다. IRD 핸들이 아니어야 합니다.
RecNumber
[입력] 설정할 필드가 포함된 설명자 레코드를 나타냅니다. 설명자 레코드는 0부터 번호가 매겨지고 레코드 번호 0은 책갈피 레코드입니다. 이 인수는 0보다 크거나 같아야 합니다.
RecNumber SQL_DESC_COUNT 값보다 크면 SQL_DESC_COUNTis RecNumber값으로 변경됩니다.
형식
[입력] 설명자 레코드의 SQL_DESC_TYPE 필드를 설정할 값입니다.
하위 형식
[입력] 형식이 SQL_DATETIME 또는 SQL_INTERVAL 레코드의 경우 SQL_DESC_DATETIME_INTERVAL_CODE 필드를 설정할 값입니다.
길이
[입력] 설명자 레코드의 SQL_DESC_OCTET_LENGTH 필드를 설정할 값입니다.
전체 자릿수
[입력] 설명자 레코드의 SQL_DESC_PRECISION 필드를 설정할 값입니다.
크기 조정
[입력] 설명자 레코드의 SQL_DESC_SCALE 필드를 설정할 값입니다.
DataPtr
[지연된 입력 또는 출력] 설명자 레코드의 SQL_DESC_DATA_PTR 필드를 설정할 값입니다.
DataPtr null 포인터로 설정할 수 있습니다.
DataPtr 인수를 null 포인터로 설정하여 SQL_DESC_DATA_PTR 필드를 null 포인터로 설정할 수 있습니다. DescriptorHandle 인수의 핸들이 ARD와 연결된 경우 열을 바인딩 해제합니다.
StringLengthPtr
[지연된 입력 또는 출력] 설명자 레코드의 SQL_DESC_OCTET_LENGTH_PTR 필드를 설정할 값입니다.
StringLengthPtr null 포인터로 설정하여 SQL_DESC_OCTET_LENGTH_PTR 필드를 null 포인터로 설정할 수 있습니다.
IndicatorPtr
[지연된 입력 또는 출력] 설명자 레코드의 SQL_DESC_INDICATOR_PTR 필드를 설정할 값입니다.
IndicatorPtr null 포인터로 설정하여 SQL_DESC_INDICATOR_PTR 필드를 null 포인터로 설정할 수 있습니다.
반환
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR 또는 SQL_INVALID_HANDLE.
진단
SQLSetDescRec SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO 반환하는 경우 SQL_HANDLE_DESC HandleTypeSQLGetDiagRec 호출하고 DescriptorHandle핸들 호출하여 관련 SQLSTATE 값을 가져올 수 있습니다. 다음 표에서는 SQLSetDescRec 일반적으로 반환되는 SQLSTATE 값을 나열하고 이 함수의 컨텍스트에서 각각에 대해 설명합니다. "(DM)" 표기법은 드라이버 관리자가 반환한 SQLSTATE에 대한 설명 앞에 섰습니다. 달리 명시되지 않는 한 각 SQLSTATE 값과 연결된 반환 코드는 SQL_ERROR.
SQLSTATE | 오류 | 묘사 |
---|---|---|
01000 | 일반 경고 | 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다. |
07009 | 설명자 인덱스가 잘못되었습니다. |
RecNumber 인수는 0으로 설정되었으며 DescriptorHandle IPD 핸들을 참조했습니다. RecNumber 인수가 0보다 작습니다. RecNumber 인수는 데이터 원본에서 지원할 수 있는 최대 열 또는 매개 변수 수보다 크고 DescriptorHandle 인수는 APD, IPD 또는 ARD였습니다. RecNumber 인수는 0이고 DescriptorHandle 인수는 암시적으로 할당된 APD를 참조했습니다. (이 오류는 명시적으로 할당된 애플리케이션 설명자가 실행 시간까지 APD 또는 ARD인지 여부를 알 수 없으므로 명시적으로 할당된 애플리케이션 설명자에서 발생하지 않습니다.) |
08S01 | 통신 링크 실패 | 드라이버와 드라이버가 연결된 데이터 원본 간의 통신 링크는 함수가 처리를 완료하기 전에 실패했습니다. |
HY000 | 일반 오류 | 특정 SQLSTATE가 없고 구현별 SQLSTATE가 정의되지 않은 오류가 발생했습니다. *MessageText 버퍼의 SQLGetDiagRec 반환된 오류 메시지는 오류와 그 원인을 설명합니다. |
HY001 | 메모리 할당 오류 | 드라이버가 함수 실행 또는 완료를 지원하는 데 필요한 메모리를 할당할 수 없습니다. |
HY010 | 함수 시퀀스 오류 | (DM) DescriptorHandle 비동기 실행 함수(이 함수가 아님)가 호출되고 이 함수가 호출될 때 실행 중인 StatementHandle 연결되었습니다. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations또는 SQLSetPosDescriptorHandle 연결되고 반환된 SQL_NEED_DATA StatementHandle 호출되었습니다. 이 함수는 모든 실행 시 데이터 매개 변수 또는 열에 대한 데이터를 보내기 전에 호출되었습니다. (DM) DescriptorHandle연결된 연결 핸들에 대해 비동기 실행 함수가 호출되었습니다. 이 비동기 함수는 SQLSetDescRec 함수가 호출되었을 때 계속 실행되었습니다. (DM) SQLExecute, SQLExecDirect또는 SQLMoreResultsDescriptorHandle 연결된 문 핸들 중 하나에 대해 호출되고 SQL_PARAM_DATA_AVAILABLE 반환되었습니다. 이 함수는 모든 스트리밍된 매개 변수에 대해 데이터를 검색하기 전에 호출되었습니다. |
HY013 | 메모리 관리 오류 | 메모리 조건이 낮기 때문에 기본 메모리 개체에 액세스할 수 없기 때문에 함수 호출을 처리할 수 없습니다. |
HY016 | 구현 행 설명자를 수정할 수 없음 | DescriptorHandle 인수가 IRD와 연결되었습니다. |
HY021 | 일관되지 않은 설명자 정보 |
형식 필드 또는 설명자의 SQL_DESC_TYPE 필드와 연결된 다른 필드가 잘못되었거나 일관되지 않았습니다. 일관성 검사 중에 확인된 설명자 정보가 일관되지 않았습니다. (이 섹션의 뒷부분에 있는 "일관성 검사"를 참조하세요.) |
HY090 | 잘못된 문자열 또는 버퍼 길이 | (DM) 드라이버가 ODBC |
HY117 | 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단됩니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. | (DM) 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수참조하세요. |
HYT01 | 연결 제한 시간이 만료되었습니다. | 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT 통해 설정됩니다. |
IM001 | 드라이버는 이 함수를 지원하지 않습니다. | (DM) DescriptorHandle 연결된 드라이버는 이 함수를 지원하지 않습니다. |
코멘트
애플리케이션은 SQLSetDescRec 호출하여 단일 열 또는 매개 변수에 대해 다음 필드를 설정할 수 있습니다.
SQL_DESC_TYPE
SQL_DESC_DATETIME_INTERVAL_CODE(형식이 SQL_DATETIME 또는 SQL_INTERVAL 레코드의 경우)
SQL_DESC_OCTET_LENGTH
SQL_DESC_PRECISION
SQL_DESC_SCALE
SQL_DESC_DATA_PTR
SQL_DESC_OCTET_LENGTH_PTR
SQL_DESC_INDICATOR_PTR
메모
SQLSetDescRec 호출에 실패하면 RecNumber 인수로 식별된 설명자 레코드의 내용이 정의되지 않습니다.
열 또는 매개 변수를 바인딩할 때
메모
RecNumber 인수가 0인 SQLSetDescRec 호출하기 전에 책갈피 필드를 설정하기 전에 문 특성 SQL_ATTR_USE_BOOKMARKS 항상 설정해야 합니다. 필수는 아니지만 권장됩니다.
일관성 검사
애플리케이션이 APD, ARD 또는 IPD의 SQL_DESC_DATA_PTR 필드를 설정하면 드라이버에서 일관성 검사를 자동으로 수행합니다. 필드가 다른 필드와 일치하지 않으면 SQLSetDescRec SQLSTATE HY021(일관성 없는 설명자 정보)을 반환합니다.
애플리케이션이 APD, ARD 또는 IPD의 SQL_DESC_DATA_PTR 필드를 설정할 때마다 드라이버는 SQL_DESC_TYPE 필드의 값과 해당 SQL_DESC_TYPE 필드에 적용할 수 있는 값이 유효하고 일관적인지 확인합니다. 이 검사는 SQLBindParameter
SQL_DESC_TYPE 필드는 유효한 ODBC C 또는 SQL 형식 또는 드라이버별 SQL 형식 중 하나여야 합니다. SQL_DESC_CONCISE_TYPE 필드는 간결한 날짜/시간 및 간격 형식을 포함하여 유효한 ODBC C 또는 SQL 형식 또는 드라이버별 C 또는 SQL 형식 중 하나여야 합니다.
SQL_DESC_TYPE 레코드 필드가 SQL_DATETIME 또는 SQL_INTERVAL 경우 SQL_DESC_DATETIME_INTERVAL_CODE 필드는 유효한 날짜/시간 또는 간격 코드 중 하나여야 합니다. (SQLSetDescFieldSQL_DESC_DATETIME_INTERVAL_CODE 필드에 대한 설명을 참조하세요.)
SQL_DESC_TYPE 필드에 숫자 형식이 표시되면 SQL_DESC_PRECISION 및 SQL_DESC_SCALE 필드가 유효한 것으로 확인됩니다.
SQL_DESC_CONCISE_TYPE 필드가 시간 또는 타임스탬프 데이터 형식, 초 구성 요소가 있는 간격 형식 또는 시간 구성 요소가 있는 간격 데이터 형식 중 하나인 경우 SQL_DESC_PRECISION 필드는 유효한 초 정밀도로 확인됩니다.
SQL_DESC_CONCISE_TYPE 간격 데이터 형식인 경우 SQL_DESC_DATETIME_INTERVAL_PRECISION 필드가 올바른 간격 선행 전체 자릿수 값으로 확인됩니다.
IPD의 SQL_DESC_DATA_PTR 필드는 일반적으로 설정되지 않습니다. 그러나 애플리케이션은 IPD 필드의 일관성 검사를 강제로 수행할 수 있습니다. IRD에서는 일관성 검사를 수행할 수 없습니다. IPD의 SQL_DESC_DATA_PTR 필드가 설정된 값은 실제로 저장되지 않으며
관련 함수
자세한 내용은 | 보다 |
---|---|
열 바인딩 | SQLBindCol 함수 |
매개 변수 바인딩 | SQLBindParameter 함수 |
단일 설명자 필드 가져오기 | SQLGetDescField 함수 |
여러 설명자 필드 가져오기 | SQLGetDescRec 함수 |
단일 설명자 필드 설정 | SQLSetDescField 함수 |