ISSCommandWithParameters::SetParameterProperties (OLE DB)
Задает свойства каждого параметра по порядковому номеру или задает массовые свойства параметра, указывая массив структур SSPARAMPROPS.
Синтаксис
HRESULT SetParameterProperties(
DB_UPARAMS cParams,
SSPARAMPROPS rgParamProperties[]);
Аргументы
cParams[in]
Количество структур SSPARAMPROPS в массиве rgParamProperties. Если это число равно 0, то метод ISSCommandWithParameters::SetParameterProperties удалит все свойства, которые могли быть указаны для всех параметров команды.rgParamProperties[in]
Массив задаваемых структур SSPARAMPROPS.
Значения кодов возврата
Метод ISSCommandWithParameters::SetParameterProperties возвращает те же коды ошибок, что и метод ядра OLE DB ICommandProperties::SetProperties.
Замечания
С помощью этого метода разрешается задавать свойства для каждого параметра по порядковому номеру параметра или путем одного вызова метода ISSCommandWithParameters::SetParameterProperties, если структура SSPARAMPROPS строится из массива свойств.
Метод SetParameterInfo необходимо вызывать до вызова метода ISSCommandWithParameters::SetParameterProperties. Вызов метода SetParameterProperties(0, NULL) очищает все указанные свойства параметра, тогда как вызов метода SetParameterInfo(0,NULL,NULL) очищает все сведения о параметре, в том числе все свойства, которые могут быть связаны с параметром.
Вызов метода ISSCommandWithParameters::SetParameterProperties с целью указания свойств параметра, тип которого отличен от DBTYPE_XML и DBTYPE_UDT, возвратит DB_E_ERRORSOCCURRED или DB_S_ERRORSOCCURRED и пометит поле dwStatus как DBPROPSTATUS_NOTSET для всех структур DBPROP, содержащихся в структурах SSPARAMPROPS для этого параметра. Чтобы обнаружить, к какому параметру относится 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. Дополнительные сведения см. в разделе Обнаружение метаданных.
Член |
Описание |
---|---|
iOrdinal |
Порядковый номер переданного параметра. |
cPropertySets |
Количество структур DBPROPSET в rgPropertySets. |
rgPropertySets |
Указатель на буфер, в который будет возвращен массив структур DBPROPSET. |