表值参数类型发现

如果向 OLE DB 访问接口提供了命令文本,使用者(即使用 SQL Server Native Client OLE DB 访问接口的客户端应用程序)可以发现每个命令参数的类型。了解表值参数的类型之后,使用者可以发现表值参数各列的元数据信息。

对于多数参数类型,ICommandWithParameters::GetParameterInfo 都支持过程参数的类型信息。从 SQL Server 2005 开始,随着用户定义类型和 xml 数据类型的引入,由于无法通过 ICommandWithParameters 提供用户定义类型信息(名称、架构和目录),GetParameterInfo 方法不再能够完全满足此目的。因此,定义了一个新接口 ISSCommandWithParameters 来提供扩展类型信息。

对于表值参数,同样使用 ISSCommandWithParameters 接口发现详细信息。准备命令对象之后,客户端调用 ISSCommandWithParameters::GetParameterInfo。对于表值参数,访问接口将 DBPARAMINFO 结构的 wType 成员设置为 DBTYPE_TABLE。DBPARAMINFO 结构的 ulParamSize 字段的值为 ~0。

使用者随后通过使用 ISSCommandWithParamters::GetParameterProperties 请求附加属性(表值参数类型目录名称、表值参数类型架构名称、表值参数类型名称、列排序和默认列)。

了解类型名称之后,要检索各个列信息,使用者必须调用 IOpenRowset::OpenRowset,或者通过将表值参数类型名称指定为表名来获取 DBSCHEMA_TABLE_TYPE_COLUMNS 行集。

请参阅

概念