SQLDescribeCol
对于执行的语句,SQL Server Native Client ODBC 驱动程序不需要通过查询服务器来描述结果集中的列。 在此情况下,SQLDescribeCol 不会导致服务器往返。 类似于 SQLColAttribute和SQLNumResultCols,对准备的语句而不是执行的语句调用 SQLDescribeCol 将产生服务器往返。
当某个 Transact-SQL 语句或语句批处理返回多个结果行集时,由序号引用的某一列可能来自单独的表或引用结果集中完全不同的列。 应该为每个集都调用 SQLDescribeCol。 如果结果集有变化,应用程序应该在提取行结果之前重新绑定数据值。 有关处理多个结果集返回值的详细信息,请参阅 SQLMoreResults。
当已准备的一批 SQL 语句生成多个结果集时,只为第一个结果集报告列属性。
对于大值数据类型,在 DataTypePtr 中返回的值为 SQL_VARCHAR、SQL_VARBINARY 或 SQL_NVARCHAR。 ColumnSizePtr 中的值 SQL_SS_LENGTH_UNLIMITED 指示大小“不受限制”。
从 SQL Server 2012 开始,数据库引擎中的改进功能允许 SQLDescribeCol 获取关于预期结果的更准确描述。 这些更准确的结果可能与 SQL Server 以前版本中的 SQLDescribeCol 所返回的值有所不同。 有关详细信息,请参阅元数据发现。
SQLDescribeCol 对日期和时间增强功能的支持
日期/时间类型返回以下值:
DataTypePtr |
ColumnSizePtr |
DecimalDigitsPtr |
|
---|---|---|---|
datetime |
SQL_TYPE_TIMESTAMP |
23 |
3 |
smalldatetime |
SQL_TYPE_TIMESTAMP |
16 |
0 |
date |
SQL_TYPE_DATE |
10 |
0 |
time |
SQL_SS_TIME2 |
8, 10..16 |
0..7 |
datetime2 |
SQL_TYPE_TIMESTAMP |
19, 21..27 |
0..7 |
datetimeoffset |
SQL_SS_TIMESTAMPOFFSET |
26, 28..34 |
0..7 |
有关详细信息,请参阅 日期/时间的改进 (ODBC)。
SQLDescribeCol 对大型 CLR UDT 的支持
SQLDescribeCol 支持大型 CLR 用户定义类型 (UDT)。 有关详细信息,请参阅大型 CLR 用户定义类型 (ODBC)。