Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Выполнение команды, содержащей табличное значение параметров, требует двух этапов:
Укажите типы параметров.
Привязка данных параметра.
спецификация параметров Table-Valued
Потребитель может указать тип табличного параметра. Эти сведения включают имя типа параметра с табличным значением. Он также содержит имя схемы, если определяемый пользователем тип таблицы для параметра табличного значения не находится в текущей схеме по умолчанию для подключения. В зависимости от поддержки сервера потребитель также может указать необязательные сведения о метаданных, например порядок столбцов, и может указать, что все строки для определенных столбцов имеют значения по умолчанию.
Чтобы указать табличное значение параметра, потребитель вызывает ISSCommandWithParameter::SetParameterInfo и при необходимости вызывает ISSCommandWithParameters::SetParameterProperties. Для табличного параметра поле pwszDataSourceType в структуре DBPARAMBINDINFO имеет значение DBTYPE_TABLE. Поле ulParamSize имеет значение ~0, чтобы указать, что длина неизвестна. Определенные свойства для параметров с табличным значением, например имя схемы, имя типа, порядок столбцов и столбцы по умолчанию, можно задать с помощью ISSCommandWithParameters::SetParameterProperties.
Привязка параметров Table-Valued
Параметр с табличным значением может быть любым объектом набора строк. Поставщик считывает из этого объекта при отправке табличных параметров серверу во время выполнения.
Чтобы привязать параметр с табличным значением, потребитель вызывает IAccessor::CreateAccessor. Поле wType структуры DBBINDING для параметра с табличным значением имеет значение DBTYPE_TABLE. Элемент pObject структуры DBBINDING не имеет значения NULL, а второй элемент pObject имеет значение IID_IRowset или любые другие интерфейсы объектов набора строк с табличным значением. Остальные поля в структуре DBBINDING должны быть заданы так же, как они задаются для потоковых BLOB-объектов.
В привязках для табличного параметра и объекта набора строк, связанного с табличным параметром, применяются следующие ограничения:
Единственными значениями состояния, допустимыми для данных столбца столбца набора строк с табличным значением, являются DBSTATUS_S_ISNULL и DBSTATUS_S_OK. DBSTATUS_S_DEFAULT приведет к сбою, а привязанное значение состояния будет иметь значение DBSTATUS_E_BADSTATUS.
Параметр с табличным значением можно пометить с помощью DBSTATUS_S_DEFAULT состояния. Единственными допустимыми значениями являются DBSTATUS_S_DEFAULT и DBSTATUS_S_OK. Если для состояния задано значение DBSTATUS_S_DEFAULT, значение табличного параметра соответствует пустой таблице.
Столбцы только для чтения в табличных параметрах (удостоверения или вычисляемые столбцы) должны быть помечены как столбцы по умолчанию с помощью свойства SSPROP_PARAM_TABLE_DEFAULT_COLUMNS. Столбцы со значением по умолчанию также должны быть помечены как значения по умолчанию с помощью свойства SSPROP_PARAM_TABLE_DEFAULT_COLUMNS, чтобы разрешить использовать значение по умолчанию для значений данных столбца для определенного табличного параметра. Поставщик будет игнорировать значения данных, привязанные к столбцам, помеченным как по умолчанию.
Данные будут отправляться на сервер для столбцов с DBPROP_COL_AUTOINCREMENT или SSPROP_COL_COMPUTED, если SSPROP_PARAM_TABLE_DEFAULT также не заданы.
См. также
параметрыTable-Valued (OLE DB)
Использование параметров Table-Valued (OLE DB)