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 方法返回的错误代码相同。
注释
对于 GetParameterInfo,ISSCommandWithParameters::GetParameterProperties 具有一致的行为。如果尚未调用 ISSCommandWithParameters::SetParameterProperties 或 SetParameterInfo,或者没有使用等于零的 cParams 调用它们,则 GetParameterInfo 将派生参数信息并返回此信息。如果已经至少为一个参数调用了 ISSCommandWithParameters::SetParameterProperties 或 SetParameterInfo,则 ISSCommandWithParameters::GetParameterProperties 将仅为已经为其调用了 ISSCommandWithParameters::SetParameterProperties 的参数返回属性。如果在 ISSCommandWithParameters::GetParameterProperties 或 GetParameterInfo 之后调用 ISSCommandWithParameters::SetParameterProperties,则对 ISSCommandWithParameters::GetParameterProperties 的后续调用将为已为其调用了 ISSCommandWithParameters::SetParameterProperties 的参数返回重写的值。
SSPARAMPROPS 结构的定义如下所示:
struct SSPARAMPROPS {
DBORDINAL iOrdinal;
ULONG cPropertySets;
DBPROPSET *rgPropertySets;
};
成员 |
说明 |
---|---|
iOrdinal |
所传递参数的序号。 |
cPropertySets |
rgPropertySets 中 DBPROPSET 结构的数量。 |
rgPropertySets |
指向内存中将返回 DBPROPSET 结构数组的位置的指针。 |