Поделиться через


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.

См. также:

Интерфейс ISSCommandWithParameters (OLE DB)