The SQLDA Header

The fields in the SQLDA header have different usage depending on whether the SQLDA is being used in a DESCRIBE or PREPARE INTO statement or the SQLDA is being used in a FETCH, INSERT, OPEN, EXECUTE, or CALL statement.

The following table describes the fields in the SQLDA header.

Table 1. Fields of the SQLDA header
C name
assembler,
COBOL or
PL/I name
Data
type
Usage in DESCRIBE 1
and PREPARE INTO
Usage in FETCH, INSERT, OPEN, EXECUTE, and CALL
sqldaid
SQLDAID
CHAR(8)

An eye catcher for storage dumps.

For DESCRIBE OUTPUT or DESCRIBE INPUT, Db2 sets the first 6 bytes to 'SQLDA ' (five letters followed by the space character), the seventh byte to a space character or a number indicating the number of SQLVAR entries needed, and the eighth byte to a space character.

For more information about how the 7th byte of SQLDAID is used, see Determining how many SQLVAR occurrences are needed.

For DESCRIBE CURSOR, the field is set to 'SQLRS'. If the cursor is declared WITH HOLD in a stored procedure, the high-order bit of the 8th byte is set to 1.

For DESCRIBE PROCEDURE, it is set to 'SQLPR'.

A plus sign (+) in the 6th byte (for example, the first six bytes contain 'SQLDA+') indicates that the SQLNAME field contains an overriding CCSID.

A '2' in the 7th byte indicates the two SQLVAR entries were allocated for each column or parameter.

A '3' in the 7th byte indicates that three SQLVAR entries were allocated for each column or parameter. Although three entries are never needed on input to Db2, an SQLDA with three entries might be used when the SQLDA was initialized by a DESCRIBE or PREPARE INTO with a USING BOTH clause.

Otherwise, the SQLDAID field is not used.

sqldabc
SQLDABC
INTEGER Length of the SQLDA, equal to SQLNx * 44+16. Length of the SQLDA, greater than or equal to SQLNx * 44+16.
sqln
SQLN
SMALLINT Unchanged by Db2. The field must be set to a value greater than or equal to zero before the statement is executed. The field indicates the total number of occurrences of SQLVAR. At the very least, the number should be:
  • For DESCRIBE INPUT, the number of parameter markers to be described.
  • For other DESCRIBEs or PREPARE INTO: the number of columns of the result, or a multiple of the columns of the result when there are multiple sets of SQLVAR entries because column labels are returned in addition to column names.
Total number of occurrences of SQLVAR provided in the SQLDA. SQLN must be set to a value greater than or equal to zero.
sqld
SQLD
SMALLINT The number of columns described by occurrences of SQLVAR. Double that number if USING BOTH appears in the DESCRIBE or PREPARE INTO statement. Contains a 0 if the statement string is not a query.

For DESCRIBE PROCEDURE, the number of result sets returned by the stored procedure. Contains a 0 if no result sets are returned.

The number of host variables described by occurrences of SQLVAR.
Note:
  1. The third column of this table represents several forms of the DESCRIBE statement: