ISSCommandWithParameters::GetParameterProperties (OLE DB)

返回 SSPARAMPROPS 属性集结构的数组,每个 UDT 或 XML 参数对应一个 SSPARAMPROPS 属性集。

语法

HRESULT GetParameterProperties(
      DB_UPARAMS *pcParams,
      SSPARAMPROPS **prgParamProperties);

参数

  • pcParams[out][in]
    指向内存位置的指针,该内存位置包含在 prgParamProperties 中返回的 SSPARAMPROPS 结构的数量。

  • prgParamProperties[out]
    指向内存中将返回 SSPARAMPROPS 结构数组的位置的指针。访问接口为结构分配内存并返回此内存的地址;当使用者不再需要这些结构时,可以使用 IMalloc::Free 释放该内存。在为 prgParamProperties 调用 IMalloc::Free 之前,使用者还必须为每个 DBPROP 结构的 vValue 属性调用 VariantClear,以防止当变量包含引用类型(如 BSTR)时发生内存泄漏。如果 pcParams 在输出时为零或者发生了 DB_E_ERRORSOCCURRED 之外的错误,则访问接口不会分配任何内存并且将确保 prgParamProperties 在输出时为一个 Null 指针。

返回代码值

除了不会引发 DB_S_ERRORSOCCURRED 和 DB_E_ERRORSOCCURED 之外,GetParameterProperties 方法返回的错误代码与核心 OLE DB ICommandProperties::GetProperties 方法返回的错误代码相同。

注释

对于 GetParameterInfoISSCommandWithParameters::GetParameterProperties 具有一致的行为。如果尚未调用 ISSCommandWithParameters::SetParameterPropertiesSetParameterInfo,或者没有使用等于零的 cParams 调用它们,则 GetParameterInfo 将派生参数信息并返回此信息。如果已经至少为一个参数调用了 ISSCommandWithParameters::SetParameterPropertiesSetParameterInfo,则 ISSCommandWithParameters::GetParameterProperties 将仅为已经为其调用了 ISSCommandWithParameters::SetParameterProperties 的参数返回属性。如果在 ISSCommandWithParameters::GetParameterPropertiesGetParameterInfo 之后调用 ISSCommandWithParameters::SetParameterProperties,则对 ISSCommandWithParameters::GetParameterProperties 的后续调用将为已为其调用了 ISSCommandWithParameters::SetParameterProperties 的参数返回重写的值。

SSPARAMPROPS 结构的定义如下所示:

struct SSPARAMPROPS {

DBORDINAL iOrdinal;

ULONG cPropertySets;

DBPROPSET *rgPropertySets;

};

成员

说明

iOrdinal

所传递参数的序号。

cPropertySets

rgPropertySets 中 DBPROPSET 结构的数量。

rgPropertySets

指向内存中将返回 DBPROPSET 结构数组的位置的指针。