SQLSetDescField 함수

규칙
소개 된 버전: ODBC 3.0 표준 준수: ISO 92

요약
SQLSetDescField 설명자 레코드의 단일 필드 값을 설정 합니다.

구문

SQLRETURN SQLSetDescField(  
     SQLHDESC      DescriptorHandle,  
     SQLSMALLINT   RecNumber,  
     SQLSMALLINT   FieldIdentifier,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    BufferLength);  

인수

DescriptorHandle
입력 설명자 핸들입니다.

RecNumber
입력 응용 프로그램에서 설정 하려는 필드가 포함 된 설명자 레코드를 나타냅니다. 설명자 레코드의 번호는 0에서, 레코드 번호 0은 책갈피 레코드입니다. 헤더 필드의 경우에는 인수가 무시 됩니다.

FieldIdentifier
입력 값을 설정할 설명자의 필드를 나타냅니다. 자세한 내용은 "Comments" 섹션의 "FieldIdentifier 인수"를 참조 하세요.

ValuePtr
입력 설명자 정보 또는 정수 값을 포함 하는 버퍼에 대 한 포인터입니다. 데이터 형식은 FieldIdentifier 의 값에 따라 달라 집니다. Valueptr 이 정수 값 이면 FieldIdentifier 인수의 값에 따라 8 바이트 (sqllen), 4 바이트 (sqllen) 또는 2 바이트 (sqllen)로 간주할 수 있습니다.

BufferLength
입력 FieldIdentifier 가 ODBC에 정의 된 필드 이 고 요소 문자열이 나 이진 버퍼를 가리키는 경우이 인수는 *eptr 의 길이 여야 합니다. 문자열 데이터의 경우이 인수는 문자열의 바이트 수를 포함 해야 합니다.

FieldIdentifier 가 ODBC에 정의 된 필드이 고 이상 값 eptr 이 정수 이면 bufferlength 는 무시 됩니다.

FieldIdentifier 가 드라이버 정의 필드인 경우 응용 프로그램은 bufferlength 인수를 설정 하 여 필드의 특성을 드라이버 관리자에 게 표시 합니다. Bufferlength 에는 다음 값을 사용할 수 있습니다.

  • Valueptr 이 문자열에 대 한 포인터인 경우 bufferlength 는 문자열 또는 SQL_NTS의 길이입니다.

  • Valueptr 이 이진 버퍼에 대 한 포인터인 경우 응용 프로그램은 SQL_LEN_BINARY_ATTR (길이) 매크로의 결과를 bufferlength 로 배치 합니다. 그러면 음수 값이 Bufferlength 에 배치 됩니다.

  • Valueptr 이 문자열 또는 이진 문자열이 아닌 값에 대 한 포인터인 경우 bufferlength 의 값은 SQL_IS_POINTER 이어야 합니다.

  • Valueptr 이 고정 길이 값을 포함 하는 경우 bufferlength 는 SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT 또는 SQL_IS_USMALLINT 중 하나입니다.

반환

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR 또는 SQL_INVALID_HANDLE입니다.

진단

SQLSetDescField 가 SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO를 반환 하는 경우 SQL_HANDLE_DESC의 HandleTypeDescriptorHandle 핸들 을 사용 하 여 SQLGetDiagRec 를 호출 하 여 연결 된 SQLSTATE 값을 얻을 수 있습니다. 다음 표에서는 일반적으로 SQLSetDescField 에서 반환 하는 SQLSTATE 값을 나열 하 고이 함수의 컨텍스트에서 각 항목에 대해 설명 합니다. "(DM)" 표기법은 드라이버 관리자에서 반환 된 SQLSTATEs의 설명 보다 앞에 나옵니다. 다른 설명이 없는 한 각 SQLSTATE 값과 연결 된 반환 코드는 SQL_ERROR 됩니다.

SQLSTATE Error Description
01000 일반 경고 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO를 반환 합니다.
01 S 02 옵션 값 변경 됨 드라이버가 지정 된 값을 지원 하지 않았습니다. * (값 eptr포인터인 경우) 또는 (값 eptr이 정수 값 인 경우)에는 * 값이 구현 작업 조건으로 인해 잘못 된 것으로 처리 되므로 드라이버는 유사한 값을 대체 합니다. 함수는 SQL_SUCCESS_WITH_INFO를 반환 합니다.
07009 잘못 된 설명자 인덱스 FieldIdentifier 인수는 레코드 필드이 고, 인수 는 0 이며, DescriptorHandle 인수는 IPD 핸들을 참조 합니다.

인수 인수가 0 보다 작고 DescriptorHandle 인수는가 나 apd를 참조 합니다.

인수 인수가 데이터 원본이 지원할 수 있는 열 또는 매개 변수의 최대 개수 보다 크거나 apd 또는 DescriptorHandle 인수를 참조 합니다.

(DM) FieldIdentifier 인수가 SQL_DESC_COUNT 되었으며, * eptr 인수가 0 보다 작은 경우

DescriptorHandle 인수는 0 과 같고 암시적으로 할당 된 apd 인수를 참조 합니다. 명시적으로 할당 된 응용 프로그램 설명자는 명시적으로 할당 된 응용 프로그램 설명자가 APD 인지 아니면 실행 시간이 될 때까지이를 알 수 없기 때문에 명시적으로 할당 된 응용 프로그램 설명자에서는이 오류가 발생 하지 않습니다.
08S01 통신 연결 오류 드라이버가 연결 된 드라이버와 데이터 원본 간의 통신 연결이 함수 처리를 완료 하기 전에 실패 했습니다.
22001 문자열 데이터, 오른쪽이 잘렸습니다. FieldIdentifier 인수가 SQL_DESC_NAME 되었으며 bufferlength 인수가 SQL_MAX_IDENTIFIER_LEN 보다 큰 값입니다.
HY000 일반 오류 특정 SQLSTATE가 없고 구현 별 SQLSTATE가 정의 되지 않은 오류가 발생 했습니다. * MessageText 버퍼에서 SQLGetDiagRec 에 의해 반환 되는 오류 메시지는 오류 및 해당 원인을 설명 합니다.
HY001 메모리 할당 오류 드라이버에서 함수 실행 또는 완료를 지 원하는 데 필요한 메모리를 할당할 수 없습니다.
HY010 함수 시퀀스 오류 (DM) DescriptorHandle 가이 함수를 호출 하지 않고 비동기적으로 실행 되는 함수를 호출 하 고이 함수가 호출 될 때 여전히 실행 되는 StatementHandle 와 연결 되었습니다.

(DM) Sqlexecute, sqlexecdirect, SQLBulkOperations 또는 SQLSetPosDescriptorHandle 가 연결 되 고 SQL_NEED_DATA 반환 된 StatementHandle 에 대해 호출 되었습니다. 이 함수는 모든 실행 시 데이터 매개 변수 또는 열에 대해 데이터를 보내기 전에 호출 되었습니다.

(DM) DescriptorHandle 연결 된 연결 핸들에 대해 비동기적으로 실행 되는 함수가 호출 되었습니다. SQLSetDescField 함수가 호출 될 때이 비동기 함수는 계속 실행 중입니다.

(DM) Sqlexecute, Sqlexecdirect 또는 SQLMoreResultsDescriptorHandle 와 연결 된 문 핸들 중 하나에 대해 호출 되 고 SQL_PARAM_DATA_AVAILABLE 반환 되었습니다. 이 함수는 모든 스트리밍된 매개 변수에 대 한 데이터를 검색 하기 전에 호출 되었습니다.
HY013 메모리 관리 오류 메모리 부족 상태로 인해 기본 메모리 개체에 액세스할 수 없기 때문에 함수 호출을 처리할 수 없습니다.
HY016 구현 행 설명자를 수정할 수 없습니다. DescriptorHandle 인수가 IRD와 연결 되어 있고 FieldIdentifier 인수가 SQL_DESC_ARRAY_STATUS_PTR 되지 않았거나 SQL_DESC_ROWS_PROCESSED_PTR.
HY021 일관 되지 않은 설명자 정보 SQL_DESC_TYPE 및 SQL_DESC_DATETIME_INTERVAL_CODE 필드는 올바른 odbc SQL 형식 또는 올바른 드라이버 관련 SQL 유형 (ipds의 경우) 또는 유효한 odbc C 유형 (apds 또는 ARDs의 경우)을 구성 하지 않습니다.

일관성 확인 중에 확인 된 설명자 정보가 일치 하지 않습니다. SQLSetDescRec 의 "일관성 확인"을 참조 하십시오.
HY090 잘못 된 문자열 또는 버퍼 길이입니다. ( DM)는 * 문자열 입니다. bufferlength 는 0 보다 작지만 SQL_NTS와 같지 않습니다.

(DM) 드라이버가 ODBC 2.x 드라이버이 고, 설명자가 되었고, columnnumber 인수를 0으로 설정 하 고, 인수 bufferlength 에 지정 된 값이 4와 같지 않습니다.
HY091 잘못 된 설명자 필드 식별자입니다. FieldIdentifier 인수에 지정 된 값이 ODBC 정의 필드가 아니고 구현에서 정의 된 값이 아닙니다.

FieldIdentifier 인수가 DescriptorHandle 인수에 적합 하지 않습니다.

FieldIdentifier 인수는 읽기 전용 ODBC 정의 필드입니다.
HY092 잘못된 특성/옵션 식별자 * ValuePtr의 값이 FieldIdentifier 인수에 유효하지 않습니다.

FieldIdentifier 인수가 SQL_DESC_UNNAMED ValuePtr이 SQL_NAMED.
HY105 잘못된 매개 변수 형식 (DM) SQL_DESC_PARAMETER_TYPE 필드에 지정된 값이 잘못되었습니다. (자세한 내용은 SQLBindParameter"InputOutputType 인수" 섹션을 참조하세요.)
HY117 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단되었습니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. (DM) 일시 중단된 상태에 대한 자세한 내용은 ODBC 3.8의 새로운것을 참조하세요.
HYT01 연결 제한 시간이 만료되었습니다. 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT 통해 설정됩니다.
IM001 드라이버가 이 함수를 지원하지 않음 (DM) DescriptorHandle과 연결된 드라이버는 함수를 지원하지 않습니다.

의견

애플리케이션은 SQLSetDescField를 호출하여 설명자 필드를 한 번에 하나씩 설정할 수 있습니다. SQLSetDescField에 대한 한 번의 호출은 단일 설명자에서 단일 필드를 설정합니다. 필드를 설정할 수 있는 경우 이 함수를 호출하여 모든 설명자 형식의 필드를 설정할 수 있습니다. (이 섹션의 후반부에 있는 표를 참조하세요.)

참고

SQLSetDescField에 대한 호출이 실패하면 RecNumber 인수로 식별된 설명자 레코드의 내용이 정의되지 않습니다.

다른 함수를 호출하여 함수의 단일 호출로 여러 설명자 필드를 설정할 수 있습니다. SQLSetDescRec 함수는 열 또는 매개 변수(SQL_DESC_TYPE, SQL_DESC_DATETIME_INTERVAL_CODE, SQL_DESC_OCTET_LENGTH, SQL_DESC_PRECISION, SQL_DESC_SCALE, SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR 및 SQL_DESC_INDICATOR_PTR 필드)에 바인딩된 데이터 형식 및 버퍼에 영향을 주는 다양한 필드를 설정합니다. SQLBindCol 또는 SQLBindParameter를 사용하여 열 또는 매개 변수의 바인딩에 대한 완전한 사양을 만들 수 있습니다. 이러한 함수는 하나의 함수 호출을 통해 설명자 필드의 특정 그룹을 설정합니다.

SQLSetDescField를 호출하여 바인딩 포인터(SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR 또는 SQL_DESC_OCTET_LENGTH_PTR)에 오프셋을 추가하여 바인딩 버퍼를 변경할 수 있습니다. 이렇게 하면 SQLBindCol 또는 SQLBindParameter 를 호출하지 않고 바인딩 버퍼가 변경되어 애플리케이션이 SQL_DESC_DATA_TYPE 같은 다른 필드를 변경하지 않고도 SQL_DESC_DATA_PTR 변경할 수 있습니다.

애플리케이션이 SQLSetDescField를 호출하여 SQL_DESC_COUNT 이외의 필드 또는 지연된 필드 SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR 또는 SQL_DESC_INDICATOR_PTR 경우 레코드가 바인딩되지 않습니다.

설명자 헤더 필드는 적절한 FieldIdentifier 를 사용하여 SQLSetDescField를 호출하여 설정됩니다. 많은 헤더 필드는 문 특성이기도 하므로 SQLSetStmtAttr 를 호출하여 설정할 수도 있습니다. 이렇게 하면 애플리케이션은 먼저 설명자 핸들을 가져오지 않고 설명자 필드를 설정할 수 있습니다. 헤더 필드를 설정하기 위해 SQLSetDescField를 호출하면 RecNumber 인수가 무시됩니다.

RecNumber 0은 책갈피 필드를 설정하는 데 사용됩니다.

참고

문 특성 SQL_ATTR_USE_BOOKMARKS 항상 SQLSetDescField를 호출하여 책갈피 필드를 설정하기 전에 설정해야 합니다. 필수는 아니지만 강력히 권장됩니다.

설명자 필드 설정 시퀀스

SQLSetDescField 를 호출하여 설명자 필드를 설정하는 경우 애플리케이션은 특정 시퀀스를 따라야 합니다.

  1. 애플리케이션은 먼저 SQL_DESC_TYPE, SQL_DESC_CONCISE_TYPE 또는 SQL_DESC_DATETIME_INTERVAL_CODE 필드를 설정해야 합니다.

  2. 이러한 필드 중 하나가 설정되고 나면 애플리케이션에서 데이터 형식의 특성을 설정할 수 있으며 드라이버는 데이터 형식 특성 필드를 데이터 형식에 대한 적절한 기본값으로 설정합니다. 형식 특성 필드의 자동 기본값은 애플리케이션에서 데이터 형식을 지정한 후에는 설명자가 항상 사용할 준비가 되도록 합니다. 애플리케이션이 데이터 형식 특성을 명시적으로 설정하는 경우 기본 특성을 재정의합니다.

  3. 1단계에 나열된 필드 중 하나가 설정되고 데이터 형식 특성이 설정된 후 애플리케이션은 SQL_DESC_DATA_PTR 설정할 수 있습니다. 그러면 설명자 필드의 일관성 검사가 표시됩니다. 애플리케이션이 SQL_DESC_DATA_PTR 필드를 설정한 후 데이터 형식 또는 특성을 변경하는 경우 드라이버는 SQL_DESC_DATA_PTR null 포인터로 설정하고 레코드를 바인딩 해제합니다. 이렇게 하면 설명자 레코드를 사용할 수 있기 전에 애플리케이션이 순서대로 적절한 단계를 완료해야 합니다.

설명자 필드 초기화

설명자가 할당되면 설명자의 필드를 기본값으로 초기화하거나, 기본값 없이 초기화하거나, 설명자 형식에 대해 정의되지 않을 수 있습니다. 다음 표에서는 각 설명자 형식에 대한 각 필드의 초기화를 나타내며, "D"는 필드가 기본값으로 초기화되었음을 나타내고 , "ND"는 필드가 기본값 없이 초기화되었음을 나타냅니다. 숫자가 표시되면 필드의 기본값은 해당 숫자입니다. 또한 테이블은 필드가 읽기/쓰기(R/W) 또는 읽기 전용(R)인지를 나타냅니다.

IRD의 필드는 문이 준비되거나 실행되고 IRD가 채워진 후에만 기본값을 가지며 문 핸들 또는 설명자가 할당된 경우는 아닙니다. IRD가 채워질 때까지 IRD의 필드에 액세스하려고 하면 오류가 반환됩니다.

일부 설명자 필드는 하나 이상의 설명자 형식(ARD 및 IRD, APD 및 IPD)에 대해 정의됩니다. 설명자 형식에 대해 필드가 정의되지 않은 경우 해당 설명자를 사용하는 함수에는 필요하지 않습니다.

SQLGetDescField에서 액세스할 수 있는 필드는 반드시 SQLSetDescField 에서 설정할 수 없습니다. SQLSetDescField에서 설정할 수 있는 필드는 다음 표에 나열되어 있습니다.

헤더 필드의 초기화는 다음 표에 설명되어 있습니다.

헤더 필드 이름 형식 R/W 기본값
SQL_DESC_ALLOC_TYPE SQLSMALLINT ARD: R APD: R IRD: R IPD: R ARD: 암시적 또는 명시적 SQL_DESC_ALLOC_USER SQL_DESC_ALLOC_AUTO

APD: 암시적 또는 명시적 SQL_DESC_ALLOC_USER SQL_DESC_ALLOC_AUTO

IRD: SQL_DESC_ALLOC_AUTO

IPD: SQL_DESC_ALLOC_AUTO
SQL_DESC_ARRAY_SIZE SQLULEN ARD: R/W APD: R/W IRD: 사용되지 않는 IPD: 사용되지 않습니다. ARD:[1] APD:[1] IRD: 사용되지 않는 IPD: 사용되지 않음
SQL_DESC_ARRAY_STATUS_PTR SQLUSMALLINT* ARD: R/W APD: R/W IRD: R/W IPD: R/W ARD: Null ptr APD: Null ptr IRD: Null ptr IPD: Null ptr
SQL_DESC_BIND_OFFSET_PTR SQLLEN* ARD: R/W APD: R/W IRD: 사용되지 않는 IPD: 사용되지 않습니다. ARD: Null ptr APD: Null ptr IRD: 사용되지 않는 IPD: 사용되지 않습니다.
SQL_DESC_BIND_TYPE SQLINTEGER ARD: R/W APD: R/W IRD: 사용되지 않는 IPD: 사용되지 않습니다. ARD: SQL_BIND_BY_COLUMN

APD: SQL_BIND_BY_COLUMN

IRD: 사용되지 않습니다.

IPD: 사용되지 않습니다.
SQL_DESC_COUNT SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: 0 APD: 0 IRD: D IPD: 0
SQL_DESC_ROWS_PROCESSED_PTR SQLULEN* ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R/W IPD: R/W ARD: 사용되지 않는 APD: 사용되지 않는 IRD: Null ptr IPD: Null ptr

[1] 이러한 필드는 드라이버에서 IPD가 자동으로 채워지는 경우에만 정의됩니다. 그렇지 않으면 정의되지 않습니다. 애플리케이션에서 이러한 필드를 설정하려고 하면 SQLSTATE HY091(잘못된 설명자 필드 식별자)이 반환됩니다.

레코드 필드의 초기화는 다음 표와 같이 표시됩니다.

레코드 필드 이름 형식 R/W 기본값
SQL_DESC_AUTO_UNIQUE_VALUE SQLINTEGER ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않습니다. ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: 사용되지 않습니다.
SQL_DESC_BASE_COLUMN_NAME SQLCHAR * ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않습니다. ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: 사용되지 않습니다.
SQL_DESC_BASE_TABLE_NAME SQLCHAR * ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않습니다. ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: 사용되지 않습니다.
SQL_DESC_CASE_SENSITIVE SQLINTEGER ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: R ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: D[1]
SQL_DESC_CATALOG_NAME SQLCHAR * ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않습니다. ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: 사용되지 않습니다.
SQL_DESC_CONCISE_TYPE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: 기본 APD SQL_C_: SQL_C_ 기본 IRD: D IPD: ND
SQL_DESC_DATA_PTR SQLPOINTER ARD: R/W APD: R/W IRD: 사용되지 않는 IPD: 사용되지 않습니다. ARD: Null ptr APD: Null ptr IRD: 사용되지 않는 IPD: 사용되지 않음[2]
SQL_DESC_DATETIME_INTERVAL_CODE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_DATETIME_INTERVAL_PRECISION SQLINTEGER ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_DISPLAY_SIZE SQLLEN ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않습니다. ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: 사용되지 않습니다.
SQL_DESC_FIXED_PREC_SCALE SQLSMALLINT ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: R ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: D[1]
SQL_DESC_INDICATOR_PTR SQLLEN * ARD: R/W APD: R/W IRD: 사용되지 않는 IPD: 사용되지 않습니다. ARD: Null ptr APD: Null ptr IRD: 사용되지 않는 IPD: 사용되지 않습니다.
SQL_DESC_LABEL SQLCHAR * ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않습니다. ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: 사용되지 않습니다.
SQL_DESC_LENGTH SQLULEN ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_LITERAL_PREFIX SQLCHAR * ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않습니다. ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: 사용되지 않습니다.
SQL_DESC_LITERAL_SUFFIX SQLCHAR * ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않습니다. ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: 사용되지 않습니다.
SQL_DESC_LOCAL_TYPE_NAME SQLCHAR * ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: R ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: D[1]
SQL_DESC_NAME SQLCHAR * ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_NULLABLE SQLSMALLINT ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: R ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_NUM_PREC_RADIX SQLINTEGER ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_OCTET_LENGTH SQLLEN ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_OCTET_LENGTH_PTR SQLLEN * ARD: R/W APD: R/W IRD: 사용되지 않는 IPD: 사용되지 않습니다. ARD: Null ptr APD: Null ptr IRD: 사용되지 않는 IPD: 사용되지 않습니다.
SQL_DESC_PARAMETER_TYPE SQLSMALLINT ARD: 사용되지 않는 APD: 사용되지 않는 IRD: 사용되지 않는 IPD: R/W ARD: 사용되지 않는 APD: 사용되지 않는 IRD: 사용되지 않는 IPD: D=SQL_PARAM_INPUT
SQL_DESC_PRECISION SQLSMALLINT 작업: R/W APD: R/W IRD: R IPD: R/W 작업: ND APD: ND IRD: D IPD: ND
SQL_DESC_ROWVER SQLSMALLINT 사용: 사용 안 함

APD: 사용 안 함

IRD: R

IPD: R
사용: 사용 안 함

APD: 사용 안 함

IRD: ND

IPD: ND
SQL_DESC_SCALE SQLSMALLINT 작업: R/W APD: R/W IRD: R IPD: R/W 작업: ND APD: ND IRD: D IPD: ND
SQL_DESC_SCHEMA_NAME SQLCHAR 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: R IPD: 사용 안 함 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: D IPD: 사용 되지 않음
SQL_DESC_SEARCHABLE SQLSMALLINT 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: R IPD: 사용 안 함 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: D IPD: 사용 되지 않음
SQL_DESC_TABLE_NAME SQLCHAR 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: R IPD: 사용 안 함 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: D IPD: 사용 되지 않음
SQL_DESC_TYPE SQLSMALLINT 작업: R/W APD: R/W IRD: R IPD: R/W 작업: SQL_C_DEFAULT APD: SQL_C_DEFAULT IRD: D IPD: ND
SQL_DESC_TYPE_NAME SQLCHAR 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: R IPD: R 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: D IPD: D [1]
SQL_DESC_UNNAMED SQLSMALLINT 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: R IPD: R/W 작업: ND APD: ND IRD: D IPD: ND
SQL_DESC_UNSIGNED SQLSMALLINT 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: R IPD: R 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: D IPD: D [1]
SQL_DESC_UPDATABLE SQLSMALLINT 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: R IPD: 사용 안 함 사용: 사용 되지 않는 APD: 사용 되지 않는 IRD: D IPD: 사용 되지 않음

[1] 이러한 필드는 IPD가 드라이버에 의해 자동으로 채워지는 경우에만 정의 됩니다. 그렇지 않으면 정의 되지 않습니다. 응용 프로그램에서 이러한 필드를 설정 하려고 하면 SQLSTATE HY091 (잘못 된 설명자 필드 식별자)가 반환 됩니다.

[2] 일관성 확인을 강제 적용 하도록 IPD의 SQL_DESC_DATA_PTR 필드를 설정할 수 있습니다. SQLGetDescField 또는 SQLGetDescRec 에 대 한 후속 호출에서 드라이버는 SQL_DESC_DATA_PTR 설정 된 값을 반환 하는 데 필요 하지 않습니다.

FieldIdentifier 인수

FieldIdentifier 인수는 설정할 설명자 필드를 나타냅니다. 설명자에는 다음 섹션에 설명 된 헤더 필드 "헤더 필드"와 0 개 이상의 설명자 레코드가 포함 된 설명자 헤더가 포함 되어 있습니다 .이는 "헤더 필드" 섹션의 섹션에 설명 된 레코드 필드로 구성 됩니다.

헤더 필드

각 설명자에는 다음 필드로 구성 된 헤더가 있습니다.

SQL_DESC_ALLOC_TYPE [모두]
이 읽기 전용 SQLSMALLINT 헤더 필드는 설명자가 자동으로 드라이버에 의해 할당 되었는지 아니면 응용 프로그램에 의해 명시적으로 할당 되었는지를 지정 합니다. 응용 프로그램은이 필드를 가져올 수 있지만 수정할 수는 없습니다. 드라이버에서 설명자가 자동으로 할당 된 경우이 필드는 드라이버에 의해 SQL_DESC_ALLOC_AUTO 설정 됩니다. 응용 프로그램에서 설명자를 명시적으로 할당 한 경우 드라이버에서 SQL_DESC_ALLOC_USER 하도록 설정 됩니다.

SQL_DESC_ARRAY_SIZE [응용 프로그램 설명자]
ARDs에서이 SQLULEN 헤더 필드는 행 집합의 행 수를 지정 합니다. Sqlfetch 또는 sqlfetchscroll 에 대 한 호출에 의해 반환 되거나 SQLBulkOperations 또는 SQLSetPos 를 호출 하 여 작동 하는 행의 수입니다.

APDs에서이 SQLULEN 헤더 필드는 각 매개 변수의 값 수를 지정 합니다.

이 필드의 기본값은 1입니다. SQL_DESC_ARRAY_SIZE가 1 보다 크면 APD의 SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR 및 SQL_DESC_OCTET_LENGTH_PTR 배열에 대 한 포인터입니다. 각 배열의 카디널리티는이 필드의 값과 같습니다.

이 필드는 SQL_ATTR_ROW_ARRAY_SIZE 특성을 사용 하 여 SQLSetStmtAttr 를 호출 하 여 설정할 수도 있습니다. APD의이 필드는 SQL_ATTR_PARAMSET_SIZE 특성을 사용 하 여 SQLSetStmtAttr 를 호출 하 여 설정할 수도 있습니다.

SQL_DESC_ARRAY_STATUS_PTR [모두]
각 설명자 형식에 대해이 SQLUSMALLINT * 헤더 필드는 SQLUSMALLINT 값의 배열을 가리킵니다. 이러한 배열은 IRD (행 상태 배열), IPD (parameter status array), 행 작업 배열 () 및 APD (parameter operation array)와 같이 이름이 지정 됩니다.

IRD에서이 헤더 필드는 SQLBulkOperations, sqlfetch, sqlfetchscroll 또는 SQLSetPos 를 호출한 후 상태 값을 포함 하는 행 상태 배열을 가리킵니다. 배열에 행 집합의 행 수 만큼의 요소가 있습니다. 응용 프로그램은 SQLUSMALLINTs의 배열을 할당 하 고 배열을 가리키도록이 필드를 설정 해야 합니다. 기본적으로이 필드는 null 포인터로 설정 됩니다. SQL_DESC_ARRAY_STATUS_PTR 필드가 null 포인터로 설정 되지 않는 한 드라이버는 배열을 채웁니다 .이 경우 상태 값이 생성 되지 않고 배열이 채워지지 않습니다.

주의

응용 프로그램에서 IRD의 SQL_DESC_ARRAY_STATUS_PTR 필드가 가리키는 행 상태 배열의 요소를 설정 하는 경우 드라이버 동작은 정의 되지 않습니다.

배열은 처음에 SQLBulkOperations, sqlfetch, sqlfetchscroll 또는 SQLSetPos 를 호출 하 여 채워집니다. 호출이 SQL_SUCCESS 또는 SQL_SUCCESS_WITH_INFO를 반환 하지 않은 경우이 필드가 가리키는 배열의 내용이 정의 되지 않습니다. 배열의 요소에는 다음 값이 포함 될 수 있습니다.

  • SQL_ROW_SUCCESS: 행이 인출 되었으며 마지막으로 인출 된 이후 변경 되지 않았습니다.

  • SQL_ROW_SUCCESS_WITH_INFO: 행이 인출 되었으며 마지막으로 인출 된 이후 변경 되지 않았습니다. 그러나 행에 대 한 경고가 반환 되었습니다.

  • SQL_ROW_ERROR: 행을 페치하는 동안 오류가 발생 했습니다.

  • SQL_ROW_UPDATED: 행이 인출 되 고 마지막으로 인출 된 후 업데이트 되었습니다. 다시 인출 된 행의 상태는 SQL_ROW_SUCCESS입니다.

  • SQL_ROW_DELETED: 행이 마지막으로 인출 된 후 삭제 되었습니다.

  • SQL_ROW_ADDED: SQLBulkOperations 에 의해 행이 삽입 되었습니다. 다시 인출 된 행의 상태는 SQL_ROW_SUCCESS입니다.

  • SQL_ROW_NOROW: 행 집합은 결과 집합의 끝을 겹쳐져 행 상태 배열의이 요소로 속하는지를 행이 반환 되지 않습니다.

IRD의이 필드는 SQL_ATTR_ROW_STATUS_PTR 특성을 사용 하 여 SQLSetStmtAttr 를 호출 하 여 설정할 수도 있습니다.

IRD의 SQL_DESC_ARRAY_STATUS_PTR 필드는 SQL_SUCCESS 또는 SQL_SUCCESS_WITH_INFO 반환 된 후에만 유효 합니다. 반환 코드가 이러한 항목 중 하나가 아닌 경우 SQL_DESC_ROWS_PROCESSED_PTR가 가리키는 위치가 정의 되지 않습니다.

IPD에서이 헤더 필드는 Sqlexecute 또는 sqlexecdirect 를 호출한 후 각 매개 변수 값 집합에 대 한 상태 정보를 포함 하는 매개 변수 상태 배열을 가리킵니다. Sqlexecute 또는 sqlexecdirect 호출에서 SQL_SUCCESS 또는 SQL_SUCCESS_WITH_INFO를 반환 하지 않은 경우이 필드가 가리키는 배열의 내용이 정의 되지 않습니다. 애플리케이션은 SQLUSMALLINT 배열을 할당하고 이 필드를 배열을 가리키도록 설정해야 합니다. SQL_DESC_ARRAY_STATUS_PTR 필드가 null 포인터로 설정되지 않은 경우 드라이버가 배열을 채우며, 이 경우 상태 값이 생성되지 않고 배열이 채워지지 않습니다. 배열의 요소는 다음 값을 포함할 수 있습니다.

  • SQL_PARAM_SUCCESS: 이 매개 변수 집합에 대해 SQL 문이 성공적으로 실행되었습니다.

  • SQL_PARAM_SUCCESS_WITH_INFO: 이 매개 변수 집합에 대해 SQL 문이 성공적으로 실행되었습니다. 그러나 경고 정보는 진단 데이터 구조에서 사용할 수 있습니다.

  • SQL_PARAM_ERROR: 이 매개 변수 집합을 처리하는 동안 오류가 발생했습니다. 추가 오류 정보는 진단 데이터 구조에서 사용할 수 있습니다.

  • SQL_PARAM_UNUSED: 일부 이전 매개 변수 집합으로 인해 추가 처리를 중단하는 오류가 발생했거나 APD의 SQL_DESC_ARRAY_STATUS_PTR 필드에서 지정한 배열의 해당 매개 변수 집합에 대해 SQL_PARAM_IGNORE 설정했기 때문에 이 매개 변수 집합이 사용되지 않았습니다.

  • SQL_PARAM_DIAG_UNAVAILABLE: 진단 정보를 사용할 수 없습니다. 예를 들어 드라이버가 매개 변수 배열을 모놀리식 단위로 처리하므로 에서 이 수준의 오류 정보를 생성하지 않는 경우를 예로 들어 보겠습니다.

IPD의 이 필드는 SQL_ATTR_PARAM_STATUS_PTR 특성으로 SQLSetStmtAttr을 호출하여 설정할 수도 있습니다.

ARD에서 이 헤더 필드는 SQLSetPos 작업에 대해 이 행을 무시할지 여부를 나타내기 위해 애플리케이션에서 설정할 수 있는 값의 행 작업 배열을 가리킵니다. 배열의 요소는 다음 값을 포함할 수 있습니다.

  • SQL_ROW_PROCEED: 행은 SQLSetPos 를 사용하여 대량 작업에 포함됩니다. (이 설정은 행에서 작업이 수행된다는 것을 보장하지 않습니다. 행의 상태가 IRD 행 상태 배열에 SQL_ROW_ERROR 경우 드라이버가 행에서 작업을 수행하지 못할 수 있습니다.)

  • SQL_ROW_IGNORE: 행은 SQLSetPos 를 사용하여 대량 작업에서 제외됩니다.

배열의 요소가 설정되지 않으면 모든 행이 대량 작업에 포함됩니다. ARD의 SQL_DESC_ARRAY_STATUS_PTR 필드에 있는 값이 null 포인터이면 모든 행이 대량 작업에 포함됩니다. 해석은 포인터가 유효한 배열을 가리키고 배열의 모든 요소가 SQL_ROW_PROCEED 경우와 같습니다. 배열의 요소가 SQL_ROW_IGNORE 설정되면 무시된 행에 대한 행 상태 배열의 값이 변경되지 않습니다.

ARD의 이 필드는 SQL_ATTR_ROW_OPERATION_PTR 특성으로 SQLSetStmtAttr을 호출하여 설정할 수도 있습니다.

APD에서 이 헤더 필드는 SQLExecute 또는 SQLExecDirect를 호출할 때 이 매개 변수 집합을 무시할지 여부를 나타내기 위해 애플리케이션에서 설정할 수 있는 값의 매개 변수 작업 배열을 가리킵니다. 배열의 요소는 다음 값을 포함할 수 있습니다.

  • SQL_PARAM_PROCEED: 매개 변수 집합이 SQLExecute 또는 SQLExecDirect 호출에 포함됩니다.

  • SQL_PARAM_IGNORE: 매개 변수 집합이 SQLExecute 또는 SQLExecDirect 호출에서 제외됩니다.

배열의 요소가 설정되지 않은 경우 배열의 모든 매개 변수 집합이 SQLExecute 또는 SQLExecDirect 호출에 사용됩니다. APD의 SQL_DESC_ARRAY_STATUS_PTR 필드에 있는 값이 null 포인터이면 모든 매개 변수 집합이 사용됩니다. 해석은 포인터가 유효한 배열을 가리키고 배열의 모든 요소가 SQL_PARAM_PROCEED 경우와 같습니다.

APD의 이 필드는 SQL_ATTR_PARAM_OPERATION_PTR 특성으로 SQLSetStmtAttr을 호출하여 설정할 수도 있습니다.

SQL_DESC_BIND_OFFSET_PTR [애플리케이션 설명자]
이 SQLLEN * 헤더 필드는 바인딩 오프셋을 가리킵니다. 기본적으로 null 포인터로 설정됩니다. 이 필드가 null 포인터가 아닌 경우 드라이버는 포인터를 참조하고 인출 시 설명자 레코드(SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR 및 SQL_DESC_OCTET_LENGTH_PTR)에 null이 아닌 값이 있는 지연된 각 필드에 다시 참조된 값을 추가하고 바인딩할 때 새 포인터 값을 사용합니다.

바인딩 오프셋은 항상 SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR 및 SQL_DESC_OCTET_LENGTH_PTR 필드의 값에 직접 추가됩니다. 오프셋이 다른 값으로 변경되면 새 값이 각 설명자 필드의 값에 직접 추가됩니다. 새 오프셋은 필드 값과 이전 오프셋에 추가되지 않습니다.

필드는 지연된 필드입니다. 이 필드는 설정된 시점에 사용되지 않지만 나중에 데이터 버퍼의 주소를 확인해야 할 때 드라이버에서 사용됩니다.

ARD의 이 필드는 SQL_ATTR_ROW_BIND_OFFSET_PTR 특성으로 SQLSetStmtAttr을 호출하여 설정할 수도 있습니다. ARD의 이 필드는 SQL_ATTR_PARAM_BIND_OFFSET_PTR 특성으로 SQLSetStmtAttr을 호출하여 설정할 수도 있습니다.

자세한 내용은 SQLFetchScrollSQLBindParameter의 행 전체 바인딩에 대한 설명을 참조하세요.

SQL_DESC_BIND_TYPE [애플리케이션 설명자]
이 SQLUINTEGER 헤더 필드는 열 또는 매개 변수를 바인딩하는 데 사용할 바인딩 방향을 설정합니다.

ARD에서 이 필드는 연결된 문 핸들에서 SQLFetchScroll 또는 SQLFetch가 호출될 때 바인딩 방향을 지정합니다.

열에 대한 열별 바인딩을 선택하기 위해 이 필드는 SQL_BIND_BY_COLUMN(기본값)로 설정됩니다.

ARD의 이 필드는 SQL_ATTR_ROW_BIND_TYPE 특성 을 사용하여 SQLSetStmtAttr을 호출하여 설정할 수도 있습니다.

APD에서 이 필드는 동적 매개 변수에 사용할 바인딩 방향을 지정합니다.

매개 변수에 대한 열별 바인딩을 선택하기 위해 이 필드는 SQL_BIND_BY_COLUMN(기본값)로 설정됩니다.

APD의 이 필드는 SQL_ATTR_PARAM_BIND_TYPE 특성 을 사용하여 SQLSetStmtAttr을 호출하여 설정할 수도 있습니다.

SQL_DESC_COUNT [모두]
이 SQLSMALLINT 헤더 필드는 데이터를 포함하는 가장 번호가 높은 레코드의 1 기반 인덱스를 지정합니다. 드라이버는 설명자의 데이터 구조를 설정할 때 SQL_DESC_COUNT 필드도 설정하여 중요한 레코드의 개수를 표시해야 합니다. 애플리케이션이 이 데이터 구조의 인스턴스를 할당하는 경우 공간을 예약할 레코드 수를 지정할 필요가 없습니다. 애플리케이션에서 레코드의 내용을 지정하면 드라이버는 설명자 핸들이 적절한 크기의 데이터 구조를 참조하도록 필요한 작업을 수행합니다.

SQL_DESC_COUNT 바인딩된 모든 데이터 열(필드가 ARD에 있는 경우) 또는 바인딩된 모든 매개 변수(필드가 APD에 있는 경우)의 개수가 아니라 번호가 가장 높은 레코드의 수입니다. 번호가 가장 높은 열 또는 매개 변수가 unbound인 경우 SQL_DESC_COUNT 번호가 가장 높은 다음 열 또는 매개 변수의 수로 변경됩니다. 번호가 가장 높은 열 수보다 작은 열 또는 매개 변수가 바인딩되지 않은 경우(TargetValuePtr 인수가 null 포인터로 설정된 SQLBindCol을 호출하거나 ParameterValuePtr 인수가 null 포인터로 설정된 SQLBindParameter를 호출하여) SQL_DESC_COUNT 변경되지 않습니다. 추가 열 또는 매개 변수가 데이터를 포함하는 가장 높은 번호의 레코드보다 큰 숫자로 바인딩된 경우 드라이버는 SQL_DESC_COUNT 필드의 값을 자동으로 늘림 SQL_UNBIND 옵션을 사용하여 SQLFreeStmt를 호출하여 모든 열의 인바운드를 해제하면 ARD 및 IRD의 SQL_DESC_COUNT 필드가 0으로 설정됩니다. SQL_RESET_PARAMS 옵션을 사용하여 SQLFreeStmt를 호출하면 APD 및 IPD의 SQL_DESC_COUNT 필드가 0으로 설정됩니다.

SQL_DESC_COUNT 값은 SQLSetDescField 를 호출하여 애플리케이션에서 명시적으로 설정할 수 있습니다. SQL_DESC_COUNT 값을 명시적으로 줄이면 SQL_DESC_COUNT 새 값보다 큰 숫자가 있는 모든 레코드가 효과적으로 제거됩니다. SQL_DESC_COUNT 값이 명시적으로 0으로 설정되고 필드가 ARD에 있는 경우 바인딩된 책갈피 열을 제외한 모든 데이터 버퍼가 해제됩니다.

ARD의 이 필드에 있는 레코드 수에는 바인딩된 책갈피 열이 포함되지 않습니다. 책갈피 열의 바인딩을 해제하는 유일한 방법은 SQL_DESC_DATA_PTR 필드를 null 포인터로 설정하는 것입니다.

SQL_DESC_ROWS_PROCESSED_PTR [구현 설명자]
IRD에서 이 SQLULEN * 헤더 필드는 SQLFetch 또는 SQLFetchScroll을 호출한 후 인출된 행 수 또는 오류 행을 포함하여 SQLBulkOperations 또는 SQLSetPos를 호출하여 수행된 대량 작업의 영향을 받는 행 수를 포함하는 버퍼를 가리킵니다.

IPD에서 이 SQLUINTEGER * 헤더 필드는 오류 집합을 포함하여 처리된 매개 변수 집합의 수를 포함하는 버퍼를 가리킵니다. null 포인터인 경우 숫자가 반환되지 않습니다.

SQL_DESC_ROWS_PROCESSED_PTR SQLFetch 또는 SQLFetchScroll(IRD 필드의 경우) 또는 SQLExecute, SQLExecDirect 또는 SQLParamData(IPD 필드의 경우)를 호출한 후 SQL_SUCCESS 또는 SQL_SUCCESS_WITH_INFO 반환된 후에만 유효합니다. 이 필드가 가리키는 버퍼를 채우는 호출이 SQL_SUCCESS 또는 SQL_SUCCESS_WITH_INFO 반환하지 않는 경우 버퍼의 내용은 SQL_NO_DATA 반환하지 않는 한 정의되지 않습니다. 이 경우 버퍼의 값은 0으로 설정됩니다.

ARD의 이 필드는 SQL_ATTR_ROWS_FETCHED_PTR 특성으로 SQLSetStmtAttr을 호출하여 설정할 수도 있습니다. APD의 이 필드는 SQL_ATTR_PARAMS_PROCESSED_PTR 특성으로 SQLSetStmtAttr을 호출하여 설정할 수도 있습니다.

이 필드가 가리키는 버퍼는 애플리케이션에 의해 할당됩니다. 드라이버에서 설정하는 지연된 출력 버퍼입니다. 기본적으로 null 포인터로 설정됩니다.

레코드 필드

각 설명자는 설명자의 형식에 따라 열 데이터 또는 동적 매개 변수를 정의하는 필드로 구성된 하나 이상의 레코드를 포함합니다. 각 레코드는 단일 열 또는 매개 변수의 전체 정의입니다.

SQL_DESC_AUTO_UNIQUE_VALUE [IRD]
이 읽기 전용 SQLINTEGER 레코드 필드에는 열이 자동 증분 열이면 SQL_TRUE 포함되고, 열이 자동 증가 열이 아니면 SQL_FALSE 포함됩니다. 이 필드는 읽기 전용이지만 기본 자동 증가 열이 반드시 읽기 전용인 것은 아닙니다.

SQL_DESC_BASE_COLUMN_NAME [IRD]
이 읽기 전용 SQLCHAR * 레코드 필드에는 결과 집합 열의 기본 열 이름이 포함됩니다. 식인 열의 경우처럼 기본 열 이름이 없는 경우 이 변수에는 빈 문자열이 포함됩니다.

SQL_DESC_BASE_TABLE_NAME [IRD]
이 읽기 전용 SQLCHAR * 레코드 필드에는 결과 집합 열의 기본 테이블 이름이 포함됩니다. 기본 테이블 이름을 정의할 수 없거나 적용할 수 없는 경우 이 변수에는 빈 문자열이 포함됩니다.

SQL_DESC_CASE_SENSITIVE [구현 설명자]
이 읽기 전용 SQLINTEGER 레코드 필드는 열 또는 매개 변수가 데이터 정렬 및 비교에 대해 대/소문자를 구분하는 것으로 처리되는 경우 또는 열이 데이터 정렬 및 비교에 대/소문자를 구분하지 않는지 또는 비문자 열인 경우 SQL_FALSE SQL_TRUE 포함합니다.

SQL_DESC_CATALOG_NAME [IRD]
이 읽기 전용 SQLCHAR * 레코드 필드에는 열이 포함된 기본 테이블의 카탈로그가 포함됩니다. 열이 식이거나 열이 뷰의 일부인 경우 반환 값은 드라이버에 따라 달라집니다. 데이터 원본이 카탈로그를 지원하지 않거나 카탈로그를 확인할 수 없는 경우 이 변수에는 빈 문자열이 포함됩니다.

SQL_DESC_CONCISE_TYPE [모두]
이 SQLSMALLINT 헤더 필드는 datetime 및 interval 데이터 형식을 포함하여 모든 데이터 형식에 대한 간결한 데이터 형식을 지정합니다.

SQL_DESC_CONCISE_TYPE, SQL_DESC_TYPE 및 SQL_DESC_DATETIME_INTERVAL_CODE 필드의 값은 상호 의존합니다. 필드 중 하나가 설정될 때마다 다른 필드도 설정해야 합니다. SQL_DESC_CONCISE_TYPE SQLBindCol 또는 SQLBindParameter 또는 SQLSetDescField 를 호출하여 설정할 수 있습니다. SQL_DESC_TYPE SQLSetDescField 또는 SQLSetDescRec 를 호출하여 설정할 수 있습니다.

SQL_DESC_CONCISE_TYPE interval 또는 datetime 데이터 형식이 아닌 간결한 데이터 형식으로 설정되면 SQL_DESC_TYPE 필드가 동일한 값으로 설정되고 SQL_DESC_DATETIME_INTERVAL_CODE 필드가 0으로 설정됩니다.

SQL_DESC_CONCISE_TYPE 간결한 datetime 또는 interval 데이터 형식으로 설정되면 SQL_DESC_TYPE 필드는 해당 자세한 정보 표시 형식(SQL_DATETIME 또는 SQL_INTERVAL)으로 설정되고 SQL_DESC_DATETIME_INTERVAL_CODE 필드는 적절한 하위 코드로 설정됩니다.

SQL_DESC_DATA_PTR [애플리케이션 설명자 및 IPD]
이 SQLPOINTER 레코드 필드는 매개 변수 값(APD의 경우) 또는 열 값(ARD의 경우)을 포함하는 변수를 가리킵니다. 이 필드는 지연된 필드 입니다. 설정 당시에는 사용되지 않지만 나중에 드라이버에서 데이터를 검색하는 데 사용됩니다.

SQLBindCol 호출의 TargetValuePtr 인수가 null 포인터이거나 ARD의 SQL_DESC_DATA_PTR 필드가 Null 포인터에 대한 SQLSetDescField 또는 SQLSetDescRec 호출로 설정된 경우 ARD의 SQL_DESC_DATA_PTR 필드에 지정된 열이 바인딩되지 않습니다. SQL_DESC_DATA_PTR 필드가 null 포인터로 설정된 경우 다른 필드는 영향을 받지 않습니다.

이 필드가 가리키는 버퍼를 채우는 SQLFetch 또는 SQLFetchScroll에 대한 호출이 SQL_SUCCESS 또는 SQL_SUCCESS_WITH_INFO 반환하지 않으면 버퍼의 내용이 정의되지 않습니다.

APD, ARD 또는 IPD의 SQL_DESC_DATA_PTR 필드가 설정되면 드라이버는 SQL_DESC_TYPE 필드의 값에 유효한 ODBC C 데이터 형식 또는 드라이버별 데이터 형식 중 하나가 포함되고 데이터 형식에 영향을 주는 다른 모든 필드가 일치하는지 확인합니다. 일관성 확인을 확인하는 것은 IPD의 SQL_DESC_DATA_PTR 필드를 사용하는 유일한 용도입니다. 특히 애플리케이션이 IPD의 SQL_DESC_DATA_PTR 필드를 설정하고 나중에 이 필드에서 SQLGetDescField를 호출하는 경우 설정된 값이 반드시 반환되지는 않습니다. 자세한 내용은 SQLSetDescRec의 "일관성 검사"를 참조하세요.

SQL_DESC_DATETIME_INTERVAL_CODE [모두]
이 SQLSMALLINT 레코드 필드에는 SQL_DESC_TYPE 필드가 SQL_DATETIME 또는 SQL_INTERVAL 경우 특정 datetime 또는 interval 데이터 형식에 대한 하위 코드가 포함됩니다. SQL 및 C 데이터 형식 모두에 해당합니다. 코드는 "TYPE" 또는 "C_TYPE"(datetime 형식의 경우) 또는 "INTERVAL" 또는 "C_INTERVAL"(간격 형식의 경우)로 대체된 "CODE"로 구성된 데이터 형식 이름으로 구성됩니다.

애플리케이션 설명자의 SQL_DESC_TYPE 및 SQL_DESC_CONCISE_TYPE SQL_C_DEFAULT 설정되고 설명자가 문 핸들과 연결되지 않은 경우 SQL_DESC_DATETIME_INTERVAL_CODE 내용이 정의되지 않습니다.

이 필드는 다음 표에 나열된 datetime 데이터 형식에 대해 설정할 수 있습니다.

날짜/시간 형식 DATETIME_INTERVAL_CODE
SQL_TYPE_DATE/SQL_C_TYPE_DATE SQL_CODE_DATE
SQL_TYPE_TIME/SQL_C_TYPE_TIME SQL_CODE_TIME
SQL_TYPE_TIMESTAMP/SQL_C_TYPE_TIMESTAMP SQL_CODE_TIMESTAMP

이 필드는 다음 표에 나열된 간격 데이터 형식에 대해 설정할 수 있습니다.

간격 유형 DATETIME_INTERVAL_CODE
SQL_INTERVAL_DAY/SQL_C_INTERVAL_DAY SQL_CODE_DAY
SQL_INTERVAL_DAY_TO_HOUR/SQL_C_INTERVAL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR
SQL_INTERVAL_DAY_TO_MINUTE/SQL_C_INTERVAL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE
SQL_INTERVAL_DAY_TO_SECOND/SQL_C_INTERVAL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND
SQL_INTERVAL_HOUR/SQL_C_INTERVAL_HOUR SQL_CODE_HOUR
SQL_INTERVAL_HOUR_TO_MINUTE/SQL_C_INTERVAL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE
SQL_INTERVAL_HOUR_TO_SECOND/SQL_C_INTERVAL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND
SQL_INTERVAL_MINUTE/SQL_C_INTERVAL_MINUTE SQL_CODE_MINUTE
SQL_INTERVAL_MINUTE_TO_SECOND/SQL_C_INTERVAL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND
SQL_INTERVAL_MONTH/SQL_C_INTERVAL_MONTH SQL_CODE_MONTH
SQL_INTERVAL_SECOND/SQL_C_INTERVAL_SECOND SQL_CODE_SECOND
SQL_INTERVAL_YEAR/SQL_C_INTERVAL_YEAR SQL_CODE_YEAR
SQL_INTERVAL_YEAR_TO_MONTH/SQL_C_INTERVAL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH

데이터 간격 및 이 필드에 대한 자세한 내용은 데이터 형식 식별자 및 설명자 를 참조하세요.

SQL_DESC_DATETIME_INTERVAL_PRECISION [모두]
이 SQLINTEGER 레코드 필드에는 SQL_DESC_TYPE 필드가 SQL_INTERVAL 경우 간격 선행 전체 자릿수가 포함됩니다. SQL_DESC_DATETIME_INTERVAL_CODE 필드가 interval 데이터 형식으로 설정되면 이 필드는 기본 간격 선행 전체 자릿수로 설정됩니다.

SQL_DESC_DISPLAY_SIZE [IRD]
이 읽기 전용 SQLINTEGER 레코드 필드에는 열의 데이터를 표시하는 데 필요한 최대 문자 수가 포함됩니다.

SQL_DESC_FIXED_PREC_SCALE [구현 설명자]
이 읽기 전용 SQLSMALLINT 레코드 필드는 열이 정확한 숫자 열이고 고정 전체 자릿수 및 0이 아닌 배율인 경우 SQL_TRUE 또는 열이 고정 전체 자릿수 및 배율의 정확한 숫자 열이 아닌 경우 SQL_FALSE 로 설정됩니다.

SQL_DESC_INDICATOR_PTR [애플리케이션 설명자]
ARD에서 이 SQLLEN * 레코드 필드는 표시기 변수를 가리킵니다. 이 변수는 열 값이 NULL인 경우 SQL_NULL_DATA 포함합니다. APD의 경우 표시기 변수는 SQL_NULL_DATA NULL 동적 인수를 지정하도록 설정됩니다. 그렇지 않으면 변수가 0입니다(SQL_DESC_INDICATOR_PTR 및 SQL_DESC_OCTET_LENGTH_PTR 값이 동일한 포인터가 아닌 경우).

ARD의 SQL_DESC_INDICATOR_PTR 필드가 null 포인터인 경우 드라이버는 열이 NULL인지 여부에 대한 정보를 반환할 수 없습니다. 열이 NULL이고 SQL_DESC_INDICATOR_PTR null 포인터인 경우 드라이버가 SQLFetch 또는 SQLFetchScroll 를 호출한 후 버퍼를 채우려고 하면 SQLSTATE 22002(표시기 변수는 필요하지만 제공되지 않음)가 반환됩니다. SQLFetch 또는 SQLFetchScroll에 대한 호출이 SQL_SUCCESS 또는 SQL_SUCCESS_WITH_INFO 반환하지 않으면 버퍼의 내용이 정의되지 않습니다.

SQL_DESC_INDICATOR_PTR 필드는 SQL_DESC_OCTET_LENGTH_PTR 가리키는 필드가 설정되었는지 여부를 결정합니다. 열의 데이터 값이 NULL이면 드라이버는 표시기 변수를 SQL_NULL_DATA 설정합니다. 그러면 SQL_DESC_OCTET_LENGTH_PTR 가리키는 필드가 설정되지 않습니다. 인출하는 동안 NULL 값이 발생하지 않으면 SQL_DESC_INDICATOR_PTR 가리키는 버퍼가 0으로 설정되고 SQL_DESC_OCTET_LENGTH_PTR 가리키는 버퍼가 데이터 길이로 설정됩니다.

APD의 SQL_DESC_INDICATOR_PTR 필드가 null 포인터인 경우 애플리케이션은 이 설명자 레코드를 사용하여 NULL 인수를 지정할 수 없습니다.

필드는 지연된 필드입니다. 설정 당시에는 사용되지 않지만 나중에 드라이버가 Nullability(ARD의 경우)를 나타내거나 Nullability(APD의 경우)를 확인하기 위해 사용됩니다.

SQL_DESC_LABEL [IRD]
이 읽기 전용 SQLCHAR * 레코드 필드에는 열 레이블 또는 제목이 포함됩니다. 열에 레이블이 없으면 이 변수에 열 이름이 포함됩니다. 열이 명명되지 않고 레이블이 지정되지 않은 경우 이 변수에는 빈 문자열이 포함됩니다.

SQL_DESC_LENGTH [모두]
이 SQLULEN 레코드 필드는 문자로 된 문자열의 최대 길이 또는 실제 길이이거나 바이트 단위의 이진 데이터 형식입니다. 고정 길이 데이터 형식의 최대 길이 또는 가변 길이 데이터 형식의 실제 길이입니다. 해당 값은 항상 문자열을 종료하는 null 종료 문자를 제외합니다. 형식이 SQL_TYPE_DATE, SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP 또는 SQL 간격 데이터 형식 중 하나인 값의 경우 이 필드는 datetime 또는 interval 값에 대한 문자열 표현의 문자 길이()를 입니다.

이 필드의 값은 ODBC 2 .x 에 정의된 "length" 값과 다를 수 있습니다. 자세한 내용은 부록 D: 데이터 형식을 참조하세요.

SQL_DESC_LITERAL_PREFIX [IRD]
이 읽기 전용 SQLCHAR * 레코드 필드에는 드라이버가 이 데이터 형식의 리터럴에 대한 접두사로 인식하는 문자가 포함됩니다. 이 변수에는 리터럴 접두사에 적용할 수 없는 데이터 형식에 대한 빈 문자열이 포함되어 있습니다.

SQL_DESC_LITERAL_SUFFIX [IRD]
이 읽기 전용 SQLCHAR * 레코드 필드에는 드라이버가 이 데이터 형식의 리터럴에 대한 접미사로 인식하는 문자가 포함됩니다. 이 변수는 리터럴 접미사를 적용할 수 없는 데이터 형식에 대한 빈 문자열을 포함합니다.

SQL_DESC_LOCAL_TYPE_NAME [구현 설명자]
이 읽기 전용 SQLCHAR * 레코드 필드에는 데이터 형식의 일반 이름과 다를 수 있는 데이터 형식에 대한 지역화된(네이티브 언어) 이름이 포함됩니다. 지역화된 이름이 없으면 빈 문자열이 반환됩니다. 이 필드는 표시용으로만 사용됩니다.

SQL_DESC_NAME [구현 설명자]
행 설명자의 이 SQLCHAR * 레코드 필드에는 열 별칭(적용되는 경우)이 포함됩니다. 열 별칭이 적용되지 않으면 열 이름이 반환됩니다. 두 경우 모두 드라이버는 SQL_DESC_NAME 필드를 설정하면 SQL_DESC_UNNAMED 필드를 SQL_NAMED 설정합니다. 열 이름 또는 열 별칭이 없는 경우 드라이버는 SQL_DESC_NAME 필드에 빈 문자열을 반환하고 SQL_DESC_UNNAMED 필드를 SQL_UNNAMED 설정합니다.

애플리케이션은 IPD의 SQL_DESC_NAME 필드를 매개 변수 이름 또는 별칭으로 설정하여 저장 프로시저 매개 변수를 이름으로 지정할 수 있습니다. 자세한 내용은 이름별 매개 변수 바인딩(명명된 매개 변수)을 참조하세요. IRD의 SQL_DESC_NAME 필드는 읽기 전용 필드입니다. SQLSTATE HY091(잘못된 설명자 필드 식별자)은 애플리케이션에서 설정하려고 하면 반환됩니다.

드라이버가 명명된 매개 변수를 지원하지 않는 경우 IPD에서 이 필드는 정의되지 않습니다. 드라이버가 명명된 매개 변수를 지원하고 매개 변수를 설명할 수 있는 경우 매개 변수 이름이 이 필드에 반환됩니다.

SQL_DESC_NULLABLE [구현 설명자]
IRD에서 이 읽기 전용 SQLSMALLINT 레코드 필드는 열에 NULL 값이 있을 수 있는지 여부, 열에 NULL 값이 없는 경우 SQL_NO_NULLS 또는 열이 NULL 값을 허용하는지 여부를 알 수 없는 경우 SQL_NULLABLE_UNKNOWN SQL_NULLABLE. 이 필드는 기본 열이 아닌 결과 집합 열과 관련이 있습니다.

동적 매개 변수는 항상 null을 사용할 수 있고 애플리케이션에서 설정할 수 없으므로 IPD에서 이 필드는 항상 SQL_NULLABLE 설정됩니다.

SQL_DESC_NUM_PREC_RADIX [모두]
SQL_DESC_PRECISION 필드에 비트 수가 포함되므로 SQL_DESC_TYPE 필드의 데이터 형식이 근사치 데이터 형식인 경우 이 SQLINTEGER 필드에는 2 값이 포함됩니다. SQL_DESC_PRECISION 필드에는 10진수 수가 포함되어 있으므로 SQL_DESC_TYPE 필드의 데이터 형식이 정확한 숫자 데이터 형식인 경우 이 필드에는 10 값이 포함됩니다. 이 필드는 숫자가 아닌 모든 데이터 형식에 대해 0으로 설정됩니다.

SQL_DESC_OCTET_LENGTH [모두]
이 SQLLEN 레코드 필드에는 문자열 또는 이진 데이터 형식의 길이(바이트)가 포함됩니다. 고정 길이 문자 또는 이진 형식의 경우 실제 길이(바이트)입니다. 가변 길이 문자 또는 이진 형식의 경우 최대 길이(바이트)입니다. 이 값은 항상 구현 설명자의 null 종료 문자에 대한 공간을 제외하고 애플리케이션 설명자의 null 종료 문자에 대한 공간을 항상 포함합니다. 애플리케이션 데이터의 경우 이 필드에는 버퍼의 크기가 포함됩니다. APD의 경우 이 필드는 출력 또는 입/출력 매개 변수에 대해서만 정의됩니다.

SQL_DESC_OCTET_LENGTH_PTR [애플리케이션 설명자]
이 SQLLEN * 레코드 필드는 동적 인수(매개 변수 설명자의 경우) 또는 바인딩된 열 값(행 설명자의 경우)의 총 길이(바이트)를 포함하는 변수를 가리킵니다.

APD의 경우 문자열 및 이진을 제외한 모든 인수에 대해 이 값이 무시됩니다. 이 필드가 SQL_NTS 가리키면 동적 인수는 null로 종료되어야 합니다. 바인딩된 매개 변수가 실행 시 데이터 매개 변수가 되었음을 나타내기 위해 애플리케이션은 APD의 적절한 레코드에서 이 필드를 실행 시 값 SQL_DATA_AT_EXEC 또는 SQL_LEN_DATA_AT_EXEC 매크로의 결과를 포함하는 변수로 설정합니다. 이러한 필드가 두 개 이상인 경우 SQL_DESC_DATA_PTR 매개 변수를 고유하게 식별하는 값으로 설정하여 애플리케이션에서 요청되는 매개 변수를 결정하는 데 도움이 될 수 있습니다.

ARD의 OCTET_LENGTH_PTR 필드가 null 포인터인 경우 드라이버는 열에 대한 길이 정보를 반환하지 않습니다. APD의 SQL_DESC_OCTET_LENGTH_PTR 필드가 null 포인터인 경우 드라이버는 문자열과 이진 값이 null로 끝나는 것으로 가정합니다. (이진 값은 null로 종료되지 않아야 하지만 잘림을 방지하기 위해 길이가 지정되어야 합니다.)

이 필드가 가리키는 버퍼를 채우는 SQLFetch 또는 SQLFetchScroll에 대한 호출이 SQL_SUCCESS 또는 SQL_SUCCESS_WITH_INFO 반환하지 않으면 버퍼의 내용이 정의되지 않습니다. 이 필드는 지연된 필드 입니다. 설정 당시에는 사용되지 않지만 나중에 드라이버에서 데이터의 8진수 길이를 확인하거나 나타내는 데 사용됩니다.

SQL_DESC_PARAMETER_TYPE [IPD]
이 SQLSMALLINT 레코드 필드는 입력 매개 변수에 대해 SQL_PARAM_INPUT, 입력/출력 매개 변수에는 SQL_PARAM_INPUT_OUTPUT, 출력 매개 변수에는 SQL_PARAM_OUTPUT, 입력/출력 스트리밍 매개 변수에는 SQL_PARAM_INPUT_OUTPUT_STREAM, 출력 스트리밍 매개 변수의 경우 SQL_PARAM_OUTPUT_STREAM 로 설정됩니다. 기본적으로 SQL_PARAM_INPUT 설정됩니다.

IPD의 경우 드라이버에서 IPD를 자동으로 채우지 않으면 기본적으로 필드가 SQL_PARAM_INPUT 설정됩니다(SQL_ATTR_ENABLE_AUTO_IPD 문 특성은 SQL_FALSE). 애플리케이션은 입력 매개 변수가 아닌 매개 변수에 대해 IPD에서 이 필드를 설정해야 합니다.

SQL_DESC_PRECISION [모두]
이 SQLSMALLINT 레코드 필드에는 정확한 숫자 형식에 대한 자릿수, 대략적인 숫자 형식에 대한 mantissa의 비트 수(이진 정밀도) 또는 SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP 또는 SQL_INTERVAL_SECOND 데이터 형식에 대한 소수 자릿수 초 구성 요소의 자릿수가 포함됩니다. 이 필드는 다른 모든 데이터 형식에 대해 정의되지 않습니다.

이 필드의 값은 ODBC 2 .x 에 정의된 "precision" 값과 다를 수 있습니다. 자세한 내용은 부록 D: 데이터 형식을 참조하세요.

SQL_DESC_ROWVER [구현 설명자]
이 SQLSMALLINTrecord 필드는 행이 업데이트될 때 DBMS에 의해 열이 자동으로 수정되는지 여부를 나타냅니다(예: SQL Server "timestamp" 형식의 열). 이 레코드 필드의 값은 열이 행 버전 조정 열이면 SQL_TRUE 로 설정되고, 그렇지 않으면 SQL_FALSE. 이 열 특성은 열이 자동으로 업데이트되는지 여부를 확인하기 위해 SQL_ROWVER IdentifierType을 사용하여 SQLSpecialColumns를 호출하는 것과 비슷합니다.

SQL_DESC_SCALE [모두]
이 SQLSMALLINT 레코드 필드에는 10진수 및 숫자 데이터 형식에 대해 정의된 소수 자릿수가 포함됩니다. 필드는 다른 모든 데이터 형식에 대해 정의되지 않습니다.

이 필드의 값은 ODBC 2 .x 에 정의된 "scale" 값과 다를 수 있습니다. 자세한 내용은 부록 D: 데이터 형식을 참조하세요.

SQL_DESC_SCHEMA_NAME [IRD]
이 읽기 전용 SQLCHAR * 레코드 필드에는 열이 포함된 기본 테이블의 스키마 이름이 포함됩니다. 열이 식이거나 열이 뷰의 일부인 경우 반환 값은 드라이버에 따라 달라집니다. 데이터 원본이 스키마를 지원하지 않거나 스키마 이름을 확인할 수 없는 경우 이 변수에는 빈 문자열이 포함됩니다.

SQL_DESC_SEARCHABLE [IRD]
이 읽기 전용 SQLSMALLINT 레코드 필드는 다음 값 중 하나로 설정됩니다.

  • WHERE 절에서 열을 사용할 수 없으면 SQL_PRED_NONE. 이는 ODBC 2 .x 의 SQL_UNSEARCHABLE 값과 동일합니다.

  • 열이 WHERE 절에서만 사용할 수 있지만 LIKE 전제에서만 사용할 수 있는지 SQL_PRED_CHAR. 이는 ODBC 2 .x 의 SQL_LIKE_ONLY 값과 동일합니다.

  • LIKE를 제외한 모든 비교 연산자를 사용하여 WHERE 절에서 열을 사용할 수 있는지 SQL_PRED_BASIC. 이는 ODBC 2 .x 의 SQL_EXCEPT_LIKE 값과 동일합니다.

  • 비교 연산자를 사용하여 WHERE 절에서 열을 사용할 수 있는지 SQL_PRED_SEARCHABLE.

SQL_DESC_TABLE_NAME [IRD]
이 읽기 전용 SQLCHAR * 레코드 필드에는 이 열이 포함된 기본 테이블의 이름이 포함됩니다. 열이 식이거나 열이 뷰의 일부인 경우 반환 값은 드라이버에 따라 달라집니다.

SQL_DESC_TYPE [모두]
이 SQLSMALLINT 레코드 필드는 datetime 및 interval 데이터 형식을 제외한 모든 데이터 형식에 대해 간결한 SQL 또는 C 데이터 형식을 지정합니다. datetime 및 interval 데이터 형식의 경우 이 필드는 SQL_DATETIME 또는 SQL_INTERVAL 자세한 정보 데이터 형식을 지정합니다.

이 필드에 SQL_DATETIME 또는 SQL_INTERVAL 포함될 때마다 SQL_DESC_DATETIME_INTERVAL_CODE 필드에 간결한 형식에 적합한 하위 코드가 포함되어야 합니다. datetime 데이터 형식의 경우 SQL_DESC_TYPE SQL_DATETIME 포함하며, SQL_DESC_DATETIME_INTERVAL_CODE 필드에는 특정 datetime 데이터 형식에 대한 하위 코드가 포함됩니다. interval 데이터 형식의 경우 SQL_DESC_TYPE SQL_INTERVAL 포함되고 SQL_DESC_DATETIME_INTERVAL_CODE 필드에는 특정 간격 데이터 형식에 대한 하위 코드가 포함됩니다.

SQL_DESC_TYPE 및 SQL_DESC_CONCISE_TYPE 필드의 값은 상호 종결됩니다. 필드 중 하나가 설정될 때마다 다른 필드도 설정해야 합니다. SQL_DESC_TYPE SQLSetDescField 또는 SQLSetDescRec 를 호출하여 설정할 수 있습니다. SQL_DESC_CONCISE_TYPE SQLBindCol 또는 SQLBindParameter 또는 SQLSetDescField 를 호출하여 설정할 수 있습니다.

SQL_DESC_TYPE interval 또는 datetime 데이터 형식이 아닌 간결한 데이터 형식으로 설정되면 SQL_DESC_CONCISE_TYPE 필드가 동일한 값으로 설정되고 SQL_DESC_DATETIME_INTERVAL_CODE 필드가 0으로 설정됩니다.

SQL_DESC_TYPE 자세한 날짜/시간 또는 간격 데이터 형식(SQL_DATETIME 또는 SQL_INTERVAL)으로 설정되고 SQL_DESC_DATETIME_INTERVAL_CODE 필드가 적절한 하위 코드로 설정된 경우 SQL_DESC_CONCISE TYPE 필드는 해당 간결한 형식으로 설정됩니다. SQL_DESC_TYPE 간결한 datetime 또는 interval 형식 중 하나로 설정하려고 하면 SQLSTATE HY021(설명자 정보가 일치하지 않음)이 반환됩니다.

SQLBindCol, SQLBindParameter 또는 SQLSetDescField를 호출하여 SQL_DESC_TYPE 필드를 설정하면 아래 표와 같이 다음 필드가 다음 기본값으로 설정됩니다. 동일한 레코드의 나머지 필드 값은 정의되지 않습니다.

SQL_DESC_TYPE 값 암시적으로 설정된 다른 필드
SQL_CHAR, SQL_VARCHAR, SQL_C_CHAR, SQL_C_VARCHAR SQL_DESC_LENGTH 1로 설정됩니다. SQL_DESC_PRECISION 0으로 설정됩니다.
SQL_DATETIME SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE 또는 SQL_CODE_TIME 설정되면 SQL_DESC_PRECISION 0으로 설정됩니다. SQL_DESC_TIMESTAMP 설정되면 SQL_DESC_PRECISION 6으로 설정됩니다.
SQL_DECIMAL, SQL_NUMERIC, SQL_C_NUMERIC SQL_DESC_SCALE 0으로 설정됩니다. SQL_DESC_PRECISION 해당 데이터 형식에 대해 구현에서 정의한 전체 자릿수로 설정됩니다.

SQL_C_NUMERIC 값을 수동으로 바인딩하는 방법에 대한 자세한 내용은 C: 숫자로 SQL 참조하세요.
SQL_FLOAT, SQL_C_FLOAT SQL_DESC_PRECISION SQL_FLOAT 구현에서 정의한 기본 전체 자릿수로 설정됩니다.
SQL_INTERVAL SQL_DESC_DATETIME_INTERVAL_CODE interval 데이터 형식으로 설정되면 SQL_DESC_DATETIME_INTERVAL_PRECISION 2(기본 간격 선행 전체 자릿수)로 설정됩니다. 간격에 초 구성 요소가 있는 경우 SQL_DESC_PRECISION 6(기본 간격 초 전체 자릿수)로 설정됩니다.

애플리케이션이 SQLSetDescRec 를 호출하지 않고 설명자의 필드를 설정하기 위해 SQLSetDescField를 호출하는 경우 애플리케이션은 먼저 데이터 형식을 선언해야 합니다. 이 경우 앞의 표에 나와 있는 다른 필드는 암시적으로 설정 됩니다. 암시적으로 설정 된 값이 허용 되지 않는 경우 응용 프로그램에서 SQLSetDescField 또는 SQLSetDescRec 를 호출 하 여 허용 되지 않는 값을 명시적으로 설정할 수 있습니다.

SQL_DESC_TYPE_NAME [구현 설명자]
이 읽기 전용 SQLCHAR * 레코드 필드에는 데이터 원본 종속 형식 이름 (예: "CHAR", "VARCHAR" 등)이 포함 되어 있습니다. 데이터 형식 이름을 알 수 없는 경우이 변수에는 빈 문자열이 포함 됩니다.

SQL_DESC_UNNAMED [구현 설명자]
행 설명자의이 SQLSMALLINT record 필드는 SQL_DESC_NAME 필드를 설정 하는 경우 SQL_NAMED 또는 SQL_UNNAMED에 의해 설정 됩니다. SQL_DESC_NAME 필드에 열 별칭이 있거나 열 별칭이 적용 되지 않는 경우 드라이버는 SQL_DESC_UNNAMED 필드를 SQL_NAMED로 설정 합니다. 응용 프로그램에서 IPD의 SQL_DESC_NAME 필드를 매개 변수 이름 또는 별칭으로 설정 하는 경우 드라이버는 IPD의 SQL_DESC_UNNAMED 필드를 SQL_NAMED로 설정 합니다. 열 이름이 나 열 별칭이 없으면 드라이버는 SQL_DESC_UNNAMED 필드를 SQL_UNNAMED으로 설정 합니다.

응용 프로그램은 IPD의 SQL_DESC_UNNAMED 필드를 SQL_UNNAMED으로 설정할 수 있습니다. 응용 프로그램에서 IPD의 SQL_DESC_UNNAMED 필드를 SQL_NAMED로 설정 하려고 시도 하는 경우 드라이버는 SQLSTATE HY091 (잘못 된 설명자 필드 식별자)를 반환 합니다. IRD의 SQL_DESC_UNNAMED 필드는 읽기 전용입니다. 응용 프로그램에서 설정 하려고 시도 하는 경우 SQLSTATE HY091 (잘못 된 설명자 필드 식별자)가 반환 됩니다.

SQL_DESC_UNSIGNED [구현 설명자]
이 읽기 전용 SQLSMALLINT record 필드는 열 유형이 부호가 없거나 숫자가 아닌 경우 SQL_TRUE로 설정 되 고, 열 유형이 서명 된 경우에는 SQL_FALSE.

SQL_DESC_UPDATABLE [IRDs]
이 읽기 전용 SQLSMALLINT record 필드는 다음 값 중 하나로 설정 됩니다.

  • 결과 집합 열이 읽기 전용인 경우 SQL_ATTR_READ_ONLY 합니다.

  • 결과 집합 열이 읽기/쓰기로 설정 되 면 SQL_ATTR_WRITE 합니다.

  • 결과 집합 열을 업데이트할 수 있는지 여부를 알 수 없는 경우에 SQL_ATTR_READWRITE_UNKNOWN 합니다.

SQL_DESC_UPDATABLE은 기본 테이블의 열이 아니라 결과 집합의 열에 대 한 업데이트 가능성을 설명 합니다. 이 결과 집합 열이 기반으로 하는 기본 테이블의 열에 대 한 업데이트 가능성은이 필드의 값과 다를 수 있습니다. 열을 업데이트할 수 있는지 여부는 데이터 형식, 사용자 권한 및 결과 집합 자체의 정의를 기반으로 할 수 있습니다. 열을 업데이트할 수 있는지 명확 하지 않은 경우 SQL_ATTR_READWRITE_UNKNOWN 반환 되어야 합니다.

일관성 확인

응용 프로그램이 IPD, APD 또는의 SQL_DESC_DATA_PTR 필드 값을 전달할 때마다 자동으로 일관성 확인이 수행 됩니다. 필드 중 하나라도 다른 필드와 일치 하지 않는 경우 SQLSetDescField 는 SQLSTATE HY021 (일치 하지 않는 설명자 정보)를 반환 합니다. 자세한 내용은 SQLSetDescRec의 "일관성 확인"을 참조 하십시오.

원하는 정보 참조 항목
열 바인딩 SQLBindCol 함수
매개 변수 바인딩 SQLBindParameter 함수
설명자 필드 가져오기 SQLGetDescField 함수(SQLGetDescField Function)
여러 설명자 필드 가져오기 SQLGetDescRec 함수
여러 설명자 필드 설정 SQLSetDescRec 함수

참고 항목

ODBC 헤더 파일
ODBC API 참조