-
After a PREPARE statement, you can execute a DESCRIBE statement to retrieve information about the data type, length and column
name of each column returned by the specified prepared statement. This information is returned in the SQL Descriptor Area
(SQLDA):
EXEC SQL
DESCRIBE stmt1 INTO :sqlda
END-EXEC
If you want to execute a DESCRIBE statement immediately after a PREPARE statement, you can use the INTO option on the PREPARE
statement to perform both steps at once:
EXEC SQL
PREPARE stmt1 INTO :sqlda FROM :stmtbuf
END-EXEC
The following cases could require that you make manual changes to the SQLTYPE or SQLLEN fields in the SQLDA to accommodate
differences in host variable types and lengths after executing DESCRIBE:
- SQLTYPE: Variable-length character types
- For variable-length character types you can choose to define SQLTYPE as a fixed-size COBOL host variable such as PIC X, N,
or G, or a variable-length host variable such as a record with level 49 sub-fields for both length and the actual value. The
SQLLEN field could be either 16 or 32 bits depending on the SQLTYPE value.
- SQLTYPE: Numeric types
- For numeric types you can choose to define SQLTYPE as COMP-3, COMP, COMP-5, or to display numeric COBOL host variables with
an included or separate, and leading or trailing sign. The value returned by DESCRIBE depends on the data source. Generally
this is COMP-3 for NUMERIC or DECIMAL columns, and COMP-5 for columns of the tinyint, smallint, integer, or bigint integer
types.
- SQLLEN
- DESCRIBE sets SQLLEN to the size of integer columns in COMP and COMP-5 representations, meaning a value of 1, 2, 4, or 18.
You might need to adjust this depending on SQLTYPE. For NUMERIC and DECIMAL columns, it encodes the precision and scale of
the result.