一个描述符句柄是指包含列或者动态参数信息的一个数据结构。对于许多应用程序,直
接访问与操作描述符会使得操作更加简单。在 DPI 中描述符分为以下几种类型:
1. 应用程序参数描述符(APD):包含被应用程序设置的输入动态参数或者随执行 SQL
语句中的 CALL 产生的输出动态参数;
2. 驱动执行参数描述符(IPD):对于输入参数,在完成应用程序指定的数据转换之
后,它包含了与 APD 相同的参数。对于输出参数,在进行了一些应用程序指定的
数据转换之前,它包含了返回的参数;
3. 驱动执行行描述符(IRD):包含数据库中的一行;
4. 应用程序行描述符(ARD):包含数据的行。
描述符字段包括头字段与记录域字段,它们全面地描述列与参数。
一个描述符包括了以下的头字段:
属性 |
说明 |
DSQL_DESC_ALLOC_TYPE |
描述符的分配类型(只读) |
DSQL_DESC_ARRAY_SIZE |
描述符的记录数组大小(APD,ARD 可读写) |
DSQL_DESC_ARRAY_STATUS_PTR |
数据状态指示(可读写) |
DSQL_DESC_BIND_OFFSET_PTR |
绑定数据偏移(APD,ARD 可读写) |
DSQL_DESC_BIND_TYPE |
绑定类型(APD,ARD 可读写) |
DSQL_DESC_COUNT |
描述符包含记录个数(APD,ARD,IPD 可读写,IRD 只读) |
DSQL_DESC_ROWS_PROCESSED_PTR 处理数据的个数(IRD,IPD 可读写)
一个描述符包括了以下的记录域字段:
属性 |
说明 |
DSQL_DESC_AUTO_UNIQUE_VALUE |
结果集列是否是自动增长的(IRD 只读) |
DSQL_DESC_BASE_COLUMN_NAME |
结果集列的基列列名(IRD 只读) |
DSQL_DESC_BASE_TABLE_NAME |
结果集列的基表名(IRD 只读) |
DSQL_DESC_CASE_SENSITIVE |
对象是否大小写敏感(IRD,IPD 只读) |
DSQL_DESC_CATALOG_NAME |
列对应的库名(IRD 只读) |
DSQL_DESC_CONCISE_TYPE |
对象对应的精简类型(APD,ARD,IPD 可读写,IRD 只读) |
DSQL_DESC_DATA_PTR |
绑定数据的地址(APD,ARD 可读写) |
DSQL_DESC_DATETIME_INTERVAL_CODE |
时间日期类型,时间日期间隔类型的子类型 (APD,ARD,IPD 可读写,IRD 只读) |
DSQL_DESC_DATETIME_INTERVAL_PRECISION |
时间间隔类型的引导精度(APD,ARD,IPD 可读写, IRD 只读) |
DSQL_DESC_DISPLAY_SIZE |
列的显示长度(IRD 只读) |
DSQL_DESC_FIXED_PREC_SCALE |
指示是否是固定精度刻度的数字类型(IPD,IRD 只 读) |
DSQL_DESC_INDICATOR_PTR |
指示符地址(APD,ARD 可读写) |
DSQL_DESC_LABEL |
列的标签(IRD 只读) |
DSQL_DESC_LENGTH |
字符类型的最大或实际字符长度或者二进制类型的 最大或实际字节长度(APD,ARD,IPD 可读写,IRD 只读) |
DSQL_DESC_LITERAL_PREFIX |
列的前缀字符(IRD 只读) |
DSQL_DESC_LITERAL_SUFFIX |
列的后缀字符(IRD 只读) |
DSQL_DESC_LOCAL_TYPE_NAME |
本地的类型名(IPD,IRD 只读) |
DSQL_DESC_NAME |
列的别名(IPD 可读写,IRD 只读) |
DSQL_DESC_NULLABLE |
记录域是否可以为空(IPD,IRD 只读) |
DSQL_DESC_NUM_PREC_RADIX |
记录域数字类型精度的表示基数(APD,ARD,IPD 可 读写,IRD 只读) |
DSQL_DESC_OCTET_LENGTH |
记录域的最大字节长度(APD,ARD,IPD 可读写,IRD 只读) |
DSQL_DESC_OCTET_LENGTH_PTR |
指示绑定字符类型或二进制类型的实际字节长度 (APD,ARD 可读写) |
DSQL_DESC_PARAMETER_TYPE |
参数类型(IPD 可读写) |
DSQL_DESC_PRECISION |
精确数字类型的位数或者近似数字类型的尾数尾 数,或者时间类型,时间戳类型,秒间隔类型秒精 度(APD,ARD,IPD 可读写,IRD 只读) |
DSQL_DESC_ROWVER |
指示列是否记录行的版本信息(IPD,IRD 只读) |
DSQL_DESC_SCALE |
DEC 或者 NUMERIC 类型的刻度 |
DSQL_DESC_SCHEMA_NAME |
列所属基表所在的模式名(IRD 只读) |
DSQL_DESC_SEARCHABLE |
列的条件查询方式(IRD 只读) |
DSQL_DESC_TABLE_NAME |
列所在的基表表名(IRD 只读) |
DSQL_DESC_TYPE |
C 类型或者 DSQL 类型,时间或者间隔类型则表示 的为详细的类型 DSQL_DT 或 DSQL_INTERVAL (APD,ARD,IPD 可读写,IRD 只读) |
DSQL_DESC_TYPE_NAME |
数据源的数据类型(IPD,IRD 只读) |
DSQL_DESC_UNNAMED |
记录域是否是命名的(IPD 可读写,IRD 只读) |
DSQL_DESC_UNSIGNED |
指示记录域是否为无符号数字类型(IPD,IRD 只读) |
DSQL_DESC_UPDATABLE |
列是否为可更新(IRD 只读) |
DSQL_DESC_BIND_PARAMETER_TYPE |
参数类型(IPD 可读写) |
DSQL_DESC_DATETIME_FORMAT |
时间类型格式(APD, ARD 可读写) |
DSQL_DESC_CHARSET |
字符集编码(APD, ARD 可读写) |
评论