SQLSetDescField 함수

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

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

구문

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

인수

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

RecNumber
[입력] 애플리케이션이 설정하려는 필드를 포함하는 설명자 레코드를 나타냅니다. 설명자 레코드는 0부터 번호가 매겨지고 레코드 번호 0은 책갈피 레코드입니다. 머리글 필드에 대해서는 RecNumber 인수가 무시됩니다.

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

ValuePtr
[입력] 설명자 정보 또는 정수 값이 포함된 버퍼에 대한 포인터입니다. 데이터 형식은 FieldIdentifier의 값에 따라 달라집니다. ValuePtr이 정수 값인 경우 FieldIdentifier 인수의 값에 따라 8바이트(SQLLEN), 4바이트(SQLINTEGER) 또는 2바이트(SQLSMALLINT)로 간주될 수 있습니다.

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

FieldIdentifier가 ODBC 정의 필드이고 ValuePtr이 정수인 경우 BufferLength는 무시됩니다.

FieldIdentifier가 드라이버 정의 필드인 경우 애플리케이션은 BufferLength 인수를 설정하여 드라이버 관리자에 대한 필드의 특성을 나타냅니다. BufferLength 는 다음 값을 가질 수 있습니다.

  • ValuePtr가 문자열에 대한 포인터인 경우 BufferLength는 문자열 또는 SQL_NTS 길이입니다.

  • ValuePtr가 이진 버퍼에 대한 포인터인 경우 애플리케이션은 bufferLength에 SQL_LEN_BINARY_ATTR(길이) 매크로의 결과를 배치합니다. 그러면 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)" 표기법은 드라이버 관리자가 반환하는 SQLSTATE에 대한 설명 앞에 섰습니다. 각 SQLSTATE 값과 연결된 반환 코드는 달리 명시되지 않는 한 SQL_ERROR.

SQLSTATE Error 설명
01000 일반 경고 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
01S02 옵션 값이 변경됨 드라이버는 *ValuePtr 에 지정된 값( ValuePtr 이 포인터인 경우) 또는 ValuePtr 의 값( ValuePtr 이 정수 값인 경우)을 지원하지 않았거나 구현 작업 조건으로 인해 *ValuePtr 이 잘못되었으므로 드라이버가 비슷한 값을 대체했습니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
07009 설명자 인덱스가 잘못되었습니다. FieldIdentifier 인수는 레코드 필드이고 RecNumber 인수는 0이고 DescriptorHandle 인수는 IPD 핸들을 참조했습니다.

RecNumber 인수가 0보다 작고 DescriptorHandle 인수가 ARD 또는 APD를 참조했습니다.

RecNumber 인수는 데이터 원본이 지원할 수 있는 최대 열 또는 매개 변수 수와 APD 또는 ARD라고 하는 DescriptorHandle 인수보다 큽니다.

(DM) FieldIdentifier 인수가 SQL_DESC_COUNT *ValuePtr 인수가 0보다 작습니다.

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

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

(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 형식(IPD의 경우) 또는 유효한 ODBC C 형식(APD 또는 ARD의 경우)을 구성하지 않습니다.

일관성 검사 중에 확인된 설명자 정보가 일관되지 않았습니다. ( SQLSetDescRec의 "일관성 검사"를 참조하세요.)
HY090 잘못된 문자열 또는 버퍼 길이 (DM) *ValuePtr 는 문자열이고 BufferLength 는 0보다 작지만 SQL_NTS 같지 않았습니다.

(DM) 드라이버가 ODBC 2*.x* 드라이버였고, 설명자가 ARD이고, ColumnNumber 인수가 0으로 설정되었으며, BufferLength 인수에 지정된 값이 4와 같지 않았습니다.
HY091 설명자 필드 식별자가 잘못되었습니다. FieldIdentifier 인수에 지정된 값은 ODBC 정의 필드가 아니며 구현 정의 값이 아닙니다.

DescriptorHandle 인수에 대해 FieldIdentifier 인수가 잘못되었습니다.

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 연결 제한 시간이 만료됨 데이터 원본이 요청에 응답하기 전에 연결 시간 제한 기간이 만료되었습니다. 연결 시간 제한 기간은 SQL_ATTR_CONNECTION_TIMEOUT SQLSetConnectAttr를 통해 설정됩니다.
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 를 사용하여 열 또는 매개 변수의 바인딩에 대한 전체 사양을 만들 수 있습니다. 이러한 함수는 하나의 함수 호출을 사용하여 설명자 필드의 특정 그룹을 설정합니다.

바인딩 포인터(SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR 또는 SQL_DESC_OCTET_LENGTH_PTR)에 오프셋을 추가하여 바인딩 버퍼를 변경하기 위해 SQLSetDescField를 호출할 수 있습니다. 이렇게 하면 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에서 설정할 수 있는 필드는 다음 표에 나열되어 있습니다.

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

머리글 필드 이름 Type 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(잘못된 설명자 필드 식별자)이 반환됩니다.

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

레코드 필드 이름 Type 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: SQL_C_ 기본 APD: 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 ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_ROWVER SQLSMALLINT ARD: 사용되지 않음

APD: 사용되지 않음

IRD: R

IPD: R
ARD: 사용되지 않음

APD: 사용되지 않음

IRD: ND

IPD: ND
SQL_DESC_SCALE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_SCHEMA_NAME SQLCHAR * ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않음 ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: 사용되지 않음
SQL_DESC_SEARCHABLE SQLSMALLINT ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않음 ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: 사용되지 않음
SQL_DESC_TABLE_NAME SQLCHAR * ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않음 ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: 사용되지 않음
SQL_DESC_TYPE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: SQL_C_DEFAULT APD: SQL_C_DEFAULT IRD: D IPD: ND
SQL_DESC_TYPE_NAME SQLCHAR * ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: R ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: D[1]
SQL_DESC_UNNAMED SQLSMALLINT ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_UNSIGNED SQLSMALLINT ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: R ARD: 사용되지 않는 APD: 사용되지 않는 IRD: D IPD: D[1]
SQL_DESC_UPDATABLE SQLSMALLINT ARD: 사용되지 않는 APD: 사용되지 않는 IRD: R IPD: 사용되지 않음 ARD: 사용되지 않는 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 [애플리케이션 설명자]
ARD에서 이 SQLULEN 헤더 필드는 행 집합의 행 수를 지정합니다. SQLFetch 또는SQLFetchScroll에 대한 호출에서 반환되거나 SQLBulkOperations 또는 SQLSetPos 호출로 작동할 행의 수입니다.

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

이 필드의 기본값은 1입니다. SQL_DESC_ARRAY_SIZE 1보다 크면 APD 또는 ARD의 SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR 및 SQL_DESC_OCTET_LENGTH_PTR 배열을 가리킵니다. 각 배열의 카디널리티는 이 필드의 값과 같습니다.

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

SQL_DESC_ARRAY_STATUS_PTR [모두]
각 설명자 형식에 대해 이 SQLUSMALLINT * 헤더 필드는 SQLUSMALLINT 값 배열을 가리킵니다. 이러한 배열의 이름은 다음과 같습니다. IRD(행 상태 배열), IPD(매개 변수 상태 배열), ARD(행 작업 배열) 및 APD(매개 변수 작업 배열).

IRD에서 이 헤더 필드는 SQLBulkOperations, SQLFetch, SQLFetchScroll 또는 SQLSetPos호출한 후 상태 값이 포함된 행 상태 배열을 가리킵니다. 배열에는 행 집합에 있는 만큼의 요소가 있습니다. 애플리케이션은 SQLUSMALLINT 배열을 할당하고 이 필드를 배열을 가리키도록 설정해야 합니다. 필드는 기본적으로 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에 있는 경우)가 아니라 가장 높은 번호가 매겨진 레코드의 수입니다. 번호가 가장 높은 열 또는 매개 변수가 언바운드인 경우 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 반환하지 않으면 버퍼의 내용이 정의되지 않은 경우 버퍼의 값이 0으로 설정된 SQL_NO_DATA 반환하지 않는 한 정의되지 않습니다.

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 헤더 필드는 날짜/시간 및 간격 데이터 형식을 포함하여 모든 데이터 형식에 대한 간결한 데이터 형식을 지정합니다.

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 간격 또는 날짜/시간 데이터 형식이 아닌 간결한 데이터 형식으로 설정된 경우 SQL_DESC_TYPE 필드는 동일한 값으로 설정되고 SQL_DESC_DATETIME_INTERVAL_CODE 필드는 0으로 설정됩니다.

SQL_DESC_CONCISE_TYPE 간결한 날짜/시간 또는 간격 데이터 형식으로 설정된 경우 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 필드가 SQLSetDescField 또는 SQLSetDescRec를 null 포인터로 호출하여 설정된 경우 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 경우 특정 날짜/시간 또는 간격 데이터 형식에 대한 하위 코드를 포함합니다. 이는 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_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 필드가 간격 데이터 형식으로 설정되면 이 필드는 기본 간격 선행 전체 자릿수로 설정됩니다.

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을 호출한 후 버퍼를 채웁니다. 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 인수를 지정할 수 없습니다.

이 필드는 지연된 필드입니다. 이 필드는 설정된 시점에 사용되지 않지만 나중에 드라이버에서 Null 허용 여부를 나타내거나(ARD의 경우) Null 허용 여부를 결정하는 데 사용됩니다.

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

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

이 필드의 값은 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. 이 필드는 기본 열이 아닌 결과 집합 열과 관련이 있습니다.

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

SQL_DESC_NUM_PREC_RADIX [모두]
이 SQLINTEGER 필드에는 SQL_DESC_PRECISION 필드에 비트 수가 포함되므로 SQL_DESC_TYPE 필드의 데이터 형식이 대략적인 숫자 데이터 형식인 경우 2의 값이 포함됩니다. 이 필드는 SQL_DESC_TYPE 필드의 데이터 형식이 정확한 숫자 데이터 형식인 경우 SQL_DESC_PRECISION 필드에 10진수의 수를 포함하므로 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 반환하지 않으면 버퍼의 내용이 정의되지 않습니다. 이 필드는 지연된 필드입니다. 설정 당시에는 사용되지 않지만 나중에 드라이버에서 데이터의 옥릿 길이를 확인하거나 나타내는 데 사용됩니다.

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 레코드 필드에는 정확한 숫자 형식의 숫자 수, 대략적인 숫자 형식에 대한 가수의 비트 수(이진 정밀도) 또는 SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP 또는 SQL_INTERVAL_SECOND 데이터 형식에 대한 소수 자릿수 초 구성 요소의 숫자 수가 포함됩니다. 이 필드는 다른 모든 데이터 형식에 대해 정의되지 않습니다.

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

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

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

이 필드의 값은 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 값과 같습니다.

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

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

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

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

이 필드에 SQL_DATETIME 또는 SQL_INTERVAL 포함할 때마다 SQL_DESC_DATETIME_INTERVAL_CODE 필드에 간결한 형식에 적합한 하위 코드가 포함되어야 합니다. datetime 데이터 형식의 경우 SQL_DESC_TYPE SQL_DATETIME 포함하고 SQL_DESC_DATETIME_INTERVAL_CODE 필드에는 특정 날짜/시간 데이터 형식에 대한 하위 코드가 포함됩니다. 간격 데이터 형식의 경우 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 간격 또는 날짜/시간 데이터 형식이 아닌 간결한 데이터 형식으로 설정된 경우 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 간결한 날짜/시간 또는 간격 유형 중 하나로 설정하려고 하면 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 간격 데이터 형식으로 설정되면 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 레코드 필드는 드라이버가 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 레코드 필드는 열 형식이 부호가 없거나 숫자가 아닌 경우 SQL_TRUE 설정되거나 열 형식이 서명된 경우 SQL_FALSE.

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

  • 결과 집합 열이 읽기 전용인지 SQL_ATTR_READ_ONLY.

  • 결과 집합 열이 읽기/쓰기인지 SQL_ATTR_WRITE.

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

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

일관성 검사

애플리케이션이 ARD, APD 또는 IPD의 SQL_DESC_DATA_PTR 필드에 대한 값을 전달하면 드라이버에서 일관성 검사를 자동으로 수행합니다. 필드가 다른 필드와 일치하지 않는 경우 SQLSetDescField 는 SQLSTATE HY021(일관성 없는 설명자 정보)을 반환합니다. 자세한 내용은 SQLSetDescRec의 "일관성 검사"를 참조하세요.

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

참고 항목

ODBC 헤더 파일
ODBC API 참조