SQLGetDescRec 함수
규칙
도입된 버전: ODBC 3.0 표준 준수: ISO 92
요약
SQLGetDescRec 는 설명자 레코드의 여러 필드의 현재 설정 또는 값을 반환합니다. 반환된 필드는 열 또는 매개 변수 데이터의 이름, 데이터 형식 및 스토리지를 설명합니다.
구문
SQLRETURN SQLGetDescRec(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLCHAR * Name,
SQLSMALLINT BufferLength,
SQLSMALLINT * StringLengthPtr,
SQLSMALLINT * TypePtr,
SQLSMALLINT * SubTypePtr,
SQLLEN * LengthPtr,
SQLSMALLINT * PrecisionPtr,
SQLSMALLINT * ScalePtr,
SQLSMALLINT * NullablePtr);
인수
DescriptorHandle
[입력] 설명자 핸들입니다.
RecNumber
[입력] 애플리케이션이 정보를 검색하는 설명자 레코드를 나타냅니다. 설명자 레코드는 1부터 번호가 매겨지고 레코드 번호 0은 책갈피 레코드입니다. RecNumber 인수는 SQL_DESC_COUNT 값보다 작거나 같아야 합니다. RecNumber가 SQL_DESC_COUNT 작거나 같지만 행에 열 또는 매개 변수에 대한 데이터가 포함되지 않은 경우 SQLGetDescRec에 대한 호출은 필드의 기본값을 반환합니다. (자세한 내용은 에서 "설명자 필드 초기화" 를 참조하세요.SQLSetDescField.)
입력
[출력] 설명자 레코드의 SQL_DESC_NAME 필드를 반환할 버퍼에 대한 포인터입니다.
Name이 NULL이면 StringLengthPtr는 여전히 Name이 가리키는 버퍼에서 반환할 수 있는 총 문자 수(문자 데이터의 null 종료 문자 제외)를 반환합니다.
BufferLength
[입력] *Name 버퍼의 길이(문자)입니다.
StringLengthPtr
[출력] null 종료 문자를 제외하고 *Name 버퍼에서 반환할 수 있는 데이터 문자 수를 반환할 버퍼에 대한 포인터입니다. 문자 수가 BufferLength보다 크거나 같으면 *Name의 데이터가 BufferLength에서 null 종료 문자의 길이를 뺀 값으로 잘리고 드라이버에서 null로 종료됩니다.
TypePtr
[출력] 설명자 레코드의 SQL_DESC_TYPE 필드 값을 반환할 버퍼에 대한 포인터입니다.
SubTypePtr
[출력] 형식이 SQL_DATETIME 또는 SQL_INTERVAL 레코드의 경우 SQL_DESC_DATETIME_INTERVAL_CODE 필드의 값을 반환할 버퍼에 대한 포인터입니다.
LengthPtr
[출력] 설명자 레코드의 SQL_DESC_OCTET_LENGTH 필드 값을 반환할 버퍼에 대한 포인터입니다.
PrecisionPtr
[출력] 설명자 레코드의 SQL_DESC_PRECISION 필드 값을 반환할 버퍼에 대한 포인터입니다.
ScalePtr
[출력] 설명자 레코드의 SQL_DESC_SCALE 필드 값을 반환할 버퍼에 대한 포인터입니다.
NullablePtr
[출력] 설명자 레코드의 SQL_DESC_NULLABLE 필드 값을 반환할 버퍼에 대한 포인터입니다.
반품
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_NO_DATA 또는 SQL_INVALID_HANDLE.
RecNumber가 현재 설명자 레코드 수보다 큰 경우 SQL_NO_DATA 반환됩니다.
DescriptorHandle이 IRD 핸들이고 문이 준비되거나 실행된 상태이지만 연결된 열린 커서가 없는 경우 SQL_NO_DATA 반환됩니다.
진단
SQLGetDescRec가 SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO 반환하는 경우 SQL_HANDLE_DESC HandleType 및 DescriptorHandle 핸들을 사용하여 SQLGetDiagRec 를 호출하여 관련 SQLSTATE 값을 가져올 수 있습니다. 다음 표에서는 일반적으로 SQLGetDescRec에서 반환되는 SQLSTATE 값을 나열하고 이 함수의 컨텍스트에서 각각에 대해 설명합니다. "(DM)" 표기법은 드라이버 관리자가 반환한 SQLSTATE에 대한 설명 앞에 나와 있습니다. 달리 명시되지 않는 한 각 SQLSTATE 값과 연결된 반환 코드는 SQL_ERROR.
SQLSTATE | Error | 설명 |
---|---|---|
01000 | 일반 경고 | 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다. |
01004 | 문자열 데이터, 오른쪽 잘림 | 버퍼 *이름이 전체 설명자 필드를 반환할 만큼 크지 않았습니다. 따라서 필드가 잘렸습니다. 신뢰할 수 없는 설명자 필드의 길이는 *StringLengthPtr에서 반환됩니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다. |
07009 | 설명자 인덱스가 잘못되었습니다. | FieldIdentifier 인수는 레코드 필드이고 RecNumber 인수는 0으로 설정되었으며 DescriptorHandle 인수는 IPD 핸들이었습니다. (DM) RecNumber 인수가 0으로 설정되었고 SQL_ATTR_USE_BOOKMARKS 문 특성이 SQL_UB_OFF 설정되었으며 DescriptorHandle 인수는 IRD 핸들이었습니다. RecNumber 인수가 0보다 작습니다. |
08S01 | 통신 링크 실패 | 드라이버와 드라이버가 연결된 데이터 원본 간의 통신 링크는 함수가 처리를 완료하기 전에 실패했습니다. |
HY000 | 일반 오류 | 특정 SQLSTATE가 없고 구현별 SQLSTATE가 정의되지 않은 오류가 발생했습니다. *MessageText 버퍼의 SQLGetDiagRec에서 반환된 오류 메시지는 오류와 그 원인을 설명합니다. |
HY001 | 메모리 할당 오류 | 드라이버가 함수 실행 또는 완료를 지원하는 데 필요한 메모리를 할당할 수 없습니다. |
HY007 | 연결된 문이 준비되지 않았습니다. | DescriptorHandle 이 IRD와 연결되었고 연결된 문 핸들이 준비되거나 실행된 상태가 아닙니다. |
HY010 | 함수 시퀀스 오류 | (DM) DescriptorHandle은 비동기 실행 함수(이 함수가 아님)가 호출되고 이 함수가 호출될 때 여전히 실행 중인 StatementHandle과 연결되었습니다. (DM) DescriptorHandle은 SQLExecute, SQLExecDirect, SQLBulkOperations 또는 SQLSetPos가 호출되어 SQL_NEED_DATA 반환된 StatementHandle과 연결되었습니다. 이 함수는 모든 실행 시 데이터 매개 변수 또는 열에 대한 데이터를 보내기 전에 호출되었습니다. (DM) DescriptorHandle과 연결된 연결 핸들에 대해 비동기적으로 실행되는 함수가 호출되었습니다. 이 비동기 함수는 SQLGetDescRec가 호출되었을 때 계속 실행되었습니다. |
HY013 | 메모리 관리 오류 | 메모리 조건이 낮기 때문에 기본 메모리 개체에 액세스할 수 없기 때문에 함수 호출을 처리할 수 없습니다. |
HY117 | 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단됩니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. | (DM) 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수를 참조 하세요. |
HYT01 | 연결 제한 시간이 만료됨 | 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQL_ATTR_CONNECTION_TIMEOUT SQLSetConnectAttr를 통해 설정됩니다. |
IM001 | 드라이버는 이 함수를 지원하지 않습니다. | (DM) DescriptorHandle과 연결된 드라이버는 함수를 지원하지 않습니다. |
주석
애플리케이션은 SQLGetDescRec를 호출하여 단일 열 또는 매개 변수에 대해 다음 설명자 필드의 값을 검색할 수 있습니다.
SQL_DESC_NAME
SQL_DESC_TYPE
SQL_DESC_DATETIME_INTERVAL_CODE(형식이 SQL_DATETIME 또는 SQL_INTERVAL 레코드의 경우)
SQL_DESC_OCTET_LENGTH
SQL_DESC_PRECISION
SQL_DESC_SCALE
SQL_DESC_NULLABLE
SQLGetDescRec 는 헤더 필드의 값을 검색하지 않습니다.
애플리케이션은 필드에 해당하는 인수를 null 포인터로 설정하여 필드 설정의 반환을 방지할 수 있습니다.
애플리케이션이 SQLGetDescRec를 호출하여 특정 설명자 형식에 대해 정의되지 않은 필드의 값을 검색하는 경우 함수는 SQL_SUCCESS 반환하지만 필드에 대해 반환된 값은 정의되지 않습니다. 예를 들어 APD 또는 ARD의 SQL_DESC_NAME 또는 SQL_DESC_NULLABLE 필드에 대해 SQLGetDescRec를 호출하면 SQL_SUCCESS 반환되지만 필드에 대해 정의되지 않은 값이 반환됩니다.
애플리케이션이 SQLGetDescRec를 호출하여 특정 설명자 형식에 대해 정의되었지만 기본값이 없고 아직 설정되지 않은 필드의 값을 검색하는 경우 함수는 SQL_SUCCESS 반환하지만 필드에 대해 반환된 값은 정의되지 않습니다. 자세한 내용은 SQLSetDescField의 "설명자 필드 초기화" 를 참조하세요.
필드 값은 SQLGetDescField를 호출하여 개별적으로 검색할 수도 있습니다. 설명자 헤더 또는 레코드의 필드에 대한 설명은 SQLSetDescField를 참조 하세요. 설명자에 대한 자세한 내용은 설명자를 참조 하세요.
관련 함수
추가 정보 | 참조 |
---|---|
열 바인딩 | SQLBindCol 함수 |
매개 변수 바인딩 | SQLBindParameter 함수 |
설명자 필드 가져오기 | SQLGetDescField 함수 |
여러 설명자 필드 설정 | SQLSetDescRec 함수 |