Descriptor header and record field initialization values (CLI)

Depending on which descriptor header fields that you use, you might have a field that is already initialized with a default value or have a field which is read/write (R/W) or read-only (R).

The following tables list the initialization of each field for each type of descriptor, with D indicating that the field is initialized with a default, and ND indicating that the field is initialized without a default. If a number is shown, the default value of the field is that number. The tables also indicate whether a field is read/write (R/W) or read-only (R).

Table 1. Initialization of header fields
Descriptor header field Type Readable and writable (R/W) or read-only (R) Initialization value
SQL_DESC_ALLOC_TYPE SQLSMALLINT
  • ARD: R
  • APD: R
  • IRD: R
  • IPD: R
  • ARD: SQL_DESC_ALLOC_AUTO for implicit or SQL_DESC_ALLOC_USER for explicit
  • APD: SQL_DESC_ALLOC_AUTO for implicit or SQL_DESC_ALLOC_USER for explicit
  • IRD: SQL_DESC_ALLOC_AUTO
  • IPD: SQL_DESC_ALLOC_AUTO
SQL_DESC_ARRAY_SIZE SQLUINTEGER
  • ARD: R/W
  • APD: R/W
  • IRD: Unused
  • IPD: Unused
  • ARD: a
  • APD: a
  • IRD: Unused
  • IPD: Unused
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 SQLINTEGER *
  • ARD: R/W
  • APD: R/W
  • IRD: Unused
  • IPD: Unused
  • ARD: Null ptr
  • APD: Null ptr
  • IRD: Unused
  • IPD: Unused
SQL_DESC_BIND_TYPE SQLINTEGER
  • ARD: R/W
  • APD: R/W
  • IRD: Unused
  • IPD: Unused
  • ARD: SQL_BIND_BY_COLUMN
  • APD: SQL_BIND_BY_COLUMN
  • IRD: Unused
  • IPD: Unused
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
SQLUINTEGER *
  • ARD: Unused
  • APD: Unused
  • IRD: R/W
  • IPD: R/W
  • ARD: Unused
  • APD: Unused
  • IRD: Null Ptr
  • IPD: Null Ptr
a
These fields are defined only when the IPD is automatically populated by CLI. If the fields are not automatically populated then they are undefined. If an application attempts to set these fields, SQLSTATE HY091 (Invalid descriptor field identifier.) will be returned.

The initialization of record fields is as follows:

Table 2. Initialization of record fields
Descriptor record field Type Readable and writable (R/W) or read-only (R) Initialization value
SQL_DESC_AUTO_UNIQUE_VALUE SQLINTEGER
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_BASE_COLUMN_NAME SQLCHAR *
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_BASE_TABLE_NAME SQLCHAR *
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_CASE_SENSITIVE SQLINTEGER
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: R
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: D a
SQL_DESC_CATALOG_NAME SQLCHAR *
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_CONCISE_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_DATA_PTR SQLPOINTER
  • ARD: R/W
  • APD: R/W
  • IRD: Unused
  • IPD: Unused
  • ARD: Null ptr
  • APD: Null ptr
  • IRD: Unused
  • IPD: Unused b
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 SQLINTEGER
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_FIXED_PREC_SCALE SQLSMALLINT
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: R
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: D a
SQL_DESC_IDENTITY_VALUE SQLINTEGER
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_INDICATOR_PTR SQLINTEGER *
  • ARD: R/W
  • APD: R/W
  • IRD: Unused
  • IPD: Unused
  • ARD: Null ptr
  • APD: Null ptr
  • IRD: Unused
  • IPD: Unused
SQL_DESC_LABEL SQLCHAR *
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_LENGTH SQLUINTEGER
  • 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: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_LITERAL_SUFFIX SQLCHAR *
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_LOCAL_TYPE_NAME SQLCHAR *
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: R
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: D a
SQL_DESC_NAME SQLCHAR *
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: R/W
  • ARD: ND
  • APD: ND
  • IRD: D
  • IPD: ND
SQL_DESC_NULLABLE SQLSMALLINT
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: R
  • ARD: ND
  • APD: ND
  • IRD: N
  • 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 SQLINTEGER
  • ARD: R/W
  • APD: R/W
  • IRD: R
  • IPD: R/W
  • ARD: ND
  • APD: ND
  • IRD: D
  • IPD: ND
SQL_DESC_OCTET_LENGTH_PTR SQLINTEGER *
  • ARD: R/W
  • APD: R/W
  • IRD: Unused
  • IPD: Unused
  • ARD: Null ptr
  • APD: Null ptr
  • IRD: Unused
  • IPD: Unused
SQL_DESC_PARAMETER_TYPE SQLSMALLINT
  • ARD: Unused
  • APD: Unused
  • IPD: Unused
  • IRD: R/W
  • ARD: Unused
  • APD: Unused
  • IPD: Unused
  • IRD: 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_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: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_SEARCHABLE SQLSMALLINT
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_TABLE_NAME SQLCHAR *
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
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: Unused
  • APD: Unused
  • IRD: R
  • IPD: R
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: D a
SQL_DESC_UNNAMED SQLSMALLINT
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: R/W
  • ARD: ND
  • APD: ND
  • IRD: D
  • IPD: ND
SQL_DESC_UNSIGNED SQLSMALLINT
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: R
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: D a
SQL_DESC_UPDATABLE SQLSMALLINT
  • ARD: Unused
  • APD: Unused
  • IRD: R
  • IPD: Unused
  • ARD: Unused
  • APD: Unused
  • IRD: D
  • IPD: Unused
SQL_DESC_CARDINALITY SQLLEN
  • ARD: Unused
  • APD: R/W
  • IRD: Unused
  • IPD: R/W
  • ARD: Unused
  • APD: D
  • IRD: Unused
  • IPD: D
SQL_DESC_CARDINALITY_PTR SQLLEN *
  • ARD: Unused
  • APD: R/W
  • IRD: Unused
  • IPD: Unused
  • ARD: Unused
  • APD: D
  • IRD: Unused
  • IPD: Unused
a
These fields are defined only when the IPD is automatically populated by CLI. If the fields are not automatically populated then they are undefined. If an application attempts to set these fields, SQLSTATE HY091 (Invalid descriptor field identifier.) will be returned.
b
The SQL_DESC_DATA_PTR field in the IPD can be set to force a consistency check. In a subsequent call to SQLGetDescField() or SQLGetDescRec(), CLI is not required to return the value that SQL_DESC_DATA_PTR was set to.