--- title: "Descriptor Fields | Microsoft Docs" ms.custom: "" ms.date: "01/19/2017" ms.prod: sql ms.prod_service: connectivity ms.reviewer: "" ms.technology: connectivity ms.topic: conceptual helpviewer_keywords: - "descriptors [ODBC], fields" - "header fields [ODBC]" - "record fields [ODBC]" ms.assetid: f38623c8-fdd4-4601-b1f0-97c593d31177 author: David-Engel ms.author: v-daenge --- # Descriptor Fields Descriptors contain *header* and *record* fields that completely describe columns or parameters. A descriptor contains a single copy of the following header fields. Changing a header field affects all columns or parameters. ||| |-|-| |SQL_DESC_ALLOC_TYPE|SQL_DESC_BIND_TYPE| |SQL_DESC_ARRAY_SIZE|SQL_DESC_COUNT| |SQL_DESC_ARRAY_STATUS_PTR|SQL_DESC_ROWS_PROCESSED_PTR| |SQL_DESC_BIND_OFFSET_PTR|| A descriptor contains zero or more descriptor records. Each record describes a column or parameter, depending on the type of descriptor. When a new column or parameter is bound, a new record is added to the descriptor. When a column or parameter is unbound, a record is removed from the descriptor. Each record contains a single copy of the following fields: ||| |-|-| |SQL_DESC_AUTO_UNIQUE_VALUE|SQL_DESC_LOCAL_TYPE_NAME| |SQL_DESC_BASE_COLUMN_NAME|SQL_DESC_NAME| |SQL_DESC_BASE_TABLE_NAME|SQL_DESC_NULLABLE| |SQL_DESC_CASE_SENSITIVE|SQL_DESC_OCTET_LENGTH| |SQL_DESC_CATALOG_NAME|SQL_DESC_OCTET_LENGTH_PTR| |SQL_DESC_CONCISE_TYPE|SQL_DESC_PARAMETER_TYPE| |SQL_DESC_DATA_PTR|SQL_DESC_PRECISION| |SQL_DESC_DATETIME_INTERVAL_CODE|SQL_DESC_SCALE| |SQL_DESC_DATETIME_INTERVAL_PRECISION|SQL_DESC_SCHEMA_NAME| |SQL_DESC_DISPLAY_SIZE|SQL_DESC_SEARCHABLE| |SQL_DESC_FIXED_PREC_SCALE|SQL_DESC_TABLE_NAME| |SQL_DESC_INDICATOR_PTR|SQL_DESC_TYPE| |SQL_DESC_LABEL|SQL_DESC_TYPE_NAME| |SQL_DESC_LENGTH|SQL_DESC_UNNAMED| |SQL_DESC_LITERAL_PREFIX|SQL_DESC_UNSIGNED| |SQL_DESC_LITERAL_SUFFIX|SQL_DESC_UPDATABLE| Many statement attributes correspond to the header field of a descriptor. Setting these attributes through a call to **SQLSetStmtAttr** and setting the corresponding descriptor header field by calling **SQLSetDescField** have the same effect. The same is true for **SQLGetStmtAttr** and **SQLGetDescField**, both of which retrieve the same information. Calling the statement functions instead of the descriptor functions has the advantage that a descriptor handle does not have to be retrieved. The following header fields can be set by setting statement attributes: ||| |-|-| |SQL_DESC_ARRAY_SIZE|SQL_DESC_BIND_TYPE| |SQL_DESC_ARRAY_STATUS_PTR|SQL_DESC_ROWS_PROCESSED_PTR| |SQL_DESC_BIND_OFFSET_PTR|| This section contains the following topics. - [Record Count](../../../odbc/reference/develop-app/record-count.md) - [Bound Descriptor Records](../../../odbc/reference/develop-app/bound-descriptor-records.md) - [Deferred Fields](../../../odbc/reference/develop-app/deferred-fields.md) - [Consistency Check](../../../odbc/reference/develop-app/consistency-check.md)