ISSCommandWithParameters::SetParameterProperties (OLE DB)

按序号设置每个参数的参数属性,或通过指定 SSPARAMPROPS 结构的数组来设置批量参数属性。

语法

  
HRESULT SetParameterProperties(  
DB_UPARAMS cParams,   
SSPARAMPROPS rgParamProperties[]);  

论据

cParams[in]
rgParamProperties 数组中的 SSPARAMPROPS 结构数。 如果此数字为零, ISSCommandWithParameters::SetParameterProperties 将删除可能已为命令中的任何参数指定的所有属性。

rgParamProperties[in]
要设置的 SSPARAMPROPS 结构的数组。

返回代码值

该方法 ISSCommandWithParameters::SetParameterProperties 返回与核心 OLE DB ICommandProperties::SetProperties 方法相同的错误代码。

注解

通过序号或从 ISSCommandWithParameters::SetParameterProperties 属性数组生成 SSPARAMPROPS 后,允许基于每个参数设置参数属性属性。

在调用ISSCommandWithParameters::SetParameterProperties该方法之前,必须调用 SetParameterInfo 方法。 调用 SetParameterProperties(0, NULL) 将清除所有指定的参数属性,同时调用 SetParameterInfo(0,NULL,NULL) 清除所有参数信息,包括可能与参数关联的任何属性。

调用 ISSCommandWithParameters::SetParameterProperties 以指定非类型参数的属性DBTYPE_XML或DBTYPE_UDT返回DB_E_ERRORSOCCURRED或DB_S_ERRORSOCCURRED,并将 SSPARAMPROPS 中包含的所有 DBPROP 的 dwStatus 字段标记为具有DBPROPSTATUS_NOTSET的参数。 应遍历 SSPARAMPROPS 中包含的每个 DBPROPSET 的 DBPROP 数组,以检测DB_E_ERRORSOCCURRED或DB_S_ERRORSOCCURRED引用的参数。

如果 ISSCommandWithParameters::SetParameterProperties 调用以指定参数信息尚未使用 SetParameterInfo 设置的参数的属性,提供程序将返回E_UNEXPECTED并显示以下错误消息:

如果没有首先调用 SetParameterInfo 方法,则无法为指定的参数调用 SetParameterProperties 方法。 在设置参数属性之前,必须设置参数信息。

如果调用 ISSCommandWithParameters::SetParameterProperties 包含已设置参数信息的某些参数,以及尚未设置参数信息的某些参数,则 SSPARAMPROPS 属性集的 DBPROPSET 中的 dwStatus 属性将返回DBSTATUS_NOTSET。

SSPARAMPROPS 结构的定义如下所示:

struct SSPARAMPROPS {

DBORDINAL iOrdinal;

ULONG cPropertySets;

DBPROPSET *rgPropertySets;

};

从 SQL Server 2012 开始的数据库引擎改进允许 ISSCommandWithParameters::SetParameterProperties 获取预期结果的更准确说明。 这些更准确的结果可能与以前版本的 SQL Server 中 ISSCommandWithParameters::SetParameterProperties 返回的值不同。 有关详细信息,请参阅 元数据发现

成员 DESCRIPTION
iOrdinal 所传递参数的序号。
cPropertySets rgPropertySets 中 DBPROPSET 结构的数量 。
rgPropertySets 指向内存中将返回 DBPROPSET 结构数组的位置的指针。

另请参阅

ISSCommandWithParameters (OLE DB)