#SQLGetDescField

# 功能简介

返回单个描述符字段的值。

# 函数声明

SQLRETURN SQLGetDescField(  
     SQLHDESC        DescriptorHandle,  
     SQLSMALLINT     RecNumber,  
     SQLSMALLINT     FieldIdentifier,  
     SQLPOINTER      ValuePtr,  
     SQLINTEGER      BufferLength,  
     SQLINTEGER *    StringLengthPtr);

# 参数说明

参数名 说明
DescriptorHandle (IN) 描述符句柄。
RecNumber (IN) 指示应用程序从中查找信息的描述符记录。
FieldIdentifier (IN) 指示要返回其值的描述符的字段。
ValuePtr (OUT) 指向要在其中返回描述符信息的缓冲区的指针。
BufferLength (IN) 如果 FieldIdentifier 是 ODBC 定义的字段,并且 ValuePtr 指向字符串或二进制缓冲区,则此参数应为 *ValuePtr 的长度。
StringLengthPtr (OUT) 指向缓冲区的指针,该缓冲区将返回总字节数所需的字节数。

FieldIdentifier参数的支持情况:

不在列表中的参数不支持,同时已做拦截处理。

ARD

字段属性 FieldIdentifier 支持情况 说明
header SQL_DESC_ALLOC_TYPE 支持 目前都为SQL_DESC_ALLOC_AUTO
header SQL_DESC_ARRAY_SIZE 支持 等价于SQLSetStmtAttr的SQL_ATTR_ROW_ARRAY_SIZE
header SQL_DESC_BIND_TYPE 支持 仅支持SQL_BIND_BY_COLUMN
header SQL_DESC_COUNT 支持
record SQL_DESC_CONCISE_TYPE 支持
record SQL_DESC_DATA_PTR 支持
record SQL_DESC_DATETIME_INTERVAL_CODE 支持 返回值根据C Type不同
switch (bindCType) {
case SQL_C_TYPE_DATE:
*value = SQL_CODE_DATE;
break;
case SQL_C_TYPE_TIME:
*value = SQL_CODE_TIME;
break;
case SQL_C_TYPE_TIMESTAMP:
*value = SQL_CODE_TIMESTAMP;
break;
case SQL_C_INTERVAL_DAY_TO_SECOND:
*value = SQL_CODE_DAY_TO_SECOND;
break;
case SQL_C_INTERVAL_YEAR_TO_MONTH:
*value = SQL_CODE_YEAR_TO_MONTH;
break;
default:
*value = 0;
break;
}
record SQL_DESC_INDICATOR_PTR 支持
record SQL_DESC_NUM_PREC_RADIX 支持 一直返回10
record SQL_DESC_OCTET_LENGTH 支持
record SQL_DESC_PRECISION 支持
record SQL_DESC_SCALE 支持
record SQL_DESC_TYPE 支持 返回值根据C Type不同
switch (bindCType) {
case SQL_C_TYPE_DATE:
case SQL_C_TYPE_TIME:
case SQL_C_TYPE_TIMESTAMP:
*value = SQL_DATETIME;
break;
case SQL_C_INTERVAL_DAY_TO_SECOND:
case SQL_C_INTERVAL_YEAR_TO_MONTH:
*value = SQL_INTERVAL;
break;
default:
*value = bindCType;
break;
}

APD

字段属性 FieldIdentifier 支持情况 值说明
header SQL_DESC_ALLOC_TYPE 支持 目前都为SQL_DESC_ALLOC_AUTO
header SQL_DESC_ARRAY_SIZE 支持 等价于SQLSetStmtAttr的SQL_ATTR_PARAMSET_SIZE
header SQL_DESC_BIND_TYPE 支持 仅支持SQL_BIND_BY_COLUMN
header SQL_DESC_COUNT 支持
record SQL_DESC_CONCISE_TYPE 支持
record SQL_DESC_DATA_PTR 支持
record SQL_DESC_DATETIME_INTERVAL_CODE 支持 返回值根据C Type不同
switch (bindCType) {
case SQL_C_TYPE_DATE:
*value = SQL_CODE_DATE;
break;
case SQL_C_TYPE_TIME:
*value = SQL_CODE_TIME;
break;
case SQL_C_TYPE_TIMESTAMP:
*value = SQL_CODE_TIMESTAMP;
break;
case SQL_C_INTERVAL_DAY_TO_SECOND:
*value = SQL_CODE_DAY_TO_SECOND;
break;
case SQL_C_INTERVAL_YEAR_TO_MONTH:
*value = SQL_CODE_YEAR_TO_MONTH;
break;
default:
*value = 0;
break;
}
record SQL_DESC_INDICATOR_PTR 支持
record SQL_DESC_NUM_PREC_RADIX 支持 一直返回10
record SQL_DESC_OCTET_LENGTH 支持
record SQL_DESC_PRECISION 支持
record SQL_DESC_SCALE 支持
record SQL_DESC_TYPE 支持 返回值根据C Type不同
switch (bindCType) {
case SQL_C_TYPE_DATE:
case SQL_C_TYPE_TIME:
case SQL_C_TYPE_TIMESTAMP:
*value = SQL_DATETIME;
break;
case SQL_C_INTERVAL_DAY_TO_SECOND:
case SQL_C_INTERVAL_YEAR_TO_MONTH:
*value = SQL_INTERVAL;
break;
default:
*value = bindCType;
break;
}

IRD

字段属性 FieldIdentifier 支持情况 值说明
header SQL_DESC_ALLOC_TYPE 支持 目前都为SQL_DESC_ALLOC_AUTO
header SQL_DESC_COUNT 支持
header SQL_DESC_ROWS_PROCESSED_PTR 支持 等价于SQLSetStmtAttr的SQL_ATTR_ROWS_FETCHED_PTR
record SQL_DESC_AUTO_UNIQUE_VALUE
SQL_DESC_BASE_COLUMN_NAME
SQL_DESC_BASE_TABLE_NAME
SQL_DESC_CASE_SENSITIVE
SQL_DESC_CATALOG_NAME
SQL_DESC_CONCISE_TYPE
SQL_DESC_DISPLAY_SIZE
SQL_DESC_FIXED_PREC_SCALE
SQL_DESC_LABEL
SQL_DESC_LENGTH
SQL_DESC_LITERAL_PREFIX
SQL_DESC_LITERAL_SUFFIX
SQL_DESC_LOCAL_TYPE_NAME
SQL_DESC_NAME
SQL_DESC_NULLABLE
SQL_DESC_NUM_PREC_RADIX
SQL_DESC_OCTET_LENGTH
SQL_DESC_PRECISION
SQL_DESC_SCALE
SQL_DESC_SCHEMA_NAME
SQL_DESC_SEARCHABLE
SQL_DESC_TABLE_NAME
SQL_DESC_TYPE
SQL_DESC_TYPE_NAME
SQL_DESC_UNNAMED
SQL_DESC_UNSIGNED
SQL_DESC_UPDATABLE
参见SQLColAttribute的字段支持情况 等价于SQLColAttribute中的对应字段属性

IPD

字段属性 FieldIdentifier 支持情况 值说明
header SQL_DESC_ALLOC_TYPE 支持 目前都为SQL_DESC_ALLOC_AUTO
header SQL_DESC_COUNT 支持
record SQL_DESC_CONCISE_TYPE 支持 当该字段未设置时,返回SLQ_UNKNOWN_TYPE,当该字段已设置,返回对应已设置的sqlType
record SQL_DESC_PARAMETER_TYPE 支持
record SQL_DESC_PRECISION 不支持
record SQL_DESC_SCALE 不支持
record SQL_DESC_TYPE 支持 返回值根据sqlType不同
switch (sqlType) {
case SQL_TYPE_DATE:
case SQL_TYPE_TIME:
case SQL_TYPE_TIMESTAMP:
*value = SQL_DATETIME;
break;
case SQL_INTERVAL_DAY_TO_SECOND:
case SQL_INTERVAL_YEAR_TO_MONTH:
*value = SQL_INTERVAL;
break;
default:
*value = sqlType;
break;
}
pdf-btn 下载文档
copy-btn 复制链接