ISSCommandWithParameters::SetParameterProperties (OLE DB)
Задает свойства каждого параметра по порядковому номеру или задает массовые свойства параметра, указывая массив структур SSPARAMPROPS.
Синтаксис
HRESULT SetParameterProperties(
DB_UPARAMS cParams,
SSPARAMPROPS rgParamProperties[]);
Аргументы
cParams[in]
Количество структур SSPARAMPROPS в массиве rgParamProperties. Если это число равно нулю, 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 и помечает поле dwStatus всех DBPROP, содержащихся в SSPARAMPROPS, для этого параметра DBPROPSTATUS_NOTSET. Чтобы обнаружить, к какому параметру относится DB_E_ERRORSOCCURRED или DB_S_ERRORSOCCURRED, необходимо пройти по массиву DBPROP каждого набора DBPROPSET, содержащегося в структуре SSPARAMPROPS.
Если ISSCommandWithParameters::SetParameterProperties
вызывается для указания свойств параметров, сведения о параметрах которых еще не заданы с помощью SetParameterInfo, поставщик возвращает E_UNEXPECTED со следующим сообщением об ошибке:
Невозможно вызвать метод SetParameterProperties для указанных параметров, не вызывая предварительно метод SetParameterInfo. До задания свойств параметров необходимо задать сведения о параметрах.
Если вызов ISSCommandWithParameters::SetParameterProperties
содержит некоторые параметры, в которых заданы сведения о параметрах, и некоторые параметры, в которых эти сведения не заданы, свойства dwStatus в DBPROPSET набора свойств SSPARAMPROPS возвращаются с DBSTATUS_NOTSET.
Структура SSPARAMPROPS определена следующим образом.
struct SSPARAMPROPS {
DBORDINAL iOrdinal;
ULONG cPropertySets;
DBPROPSET *rgPropertySets;
};
Улучшения в ядре СУБД, начиная с SQL Server 2012, позволяют ISSCommandWithParameters::SetParameterProperties получать более точное описание ожидаемых результатов. Эти более точные результаты могут отличаться от значений, которые метод ISSCommandWithParameters::SetParameterProperties возвращает в предыдущих версиях SQL Server. Дополнительные сведения см. в разделе Обнаружение метаданных.
Участник | Description |
---|---|
iOrdinal | Порядковый номер переданного параметра. |
cPropertySets | Количество структур DBPROPSET в rgPropertySets. |
rgPropertySets | Указатель на буфер, в который будет возвращен массив структур DBPROPSET. |