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


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 всех СУБД, содержащихся в SSPARAMPROPS для этого параметра с DBPROPSTATUS_NOTSET. Массив DBPROP каждого DBPROPSET, содержащегося в SSPARAMPROPS, должен быть перебрасан, чтобы определить, к каким параметрам относится DB_E_ERRORSOCCURRED или DB_S_ERRORSOCCURRED.

Если 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.

См. также

ISSCommandWithParameters (OLE DB)