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


Поддержка типов параметров OLE DB, возвращающих табличное значение (методы)

Следующие стандартные методы OLE DB поддерживают возвращающие табличные значения параметры:

Метод

Поддержка возвращающих табличные значения параметров

ITableDefinitionWithConstraints::CreateTableWithConstraints

Используется при наличии сведений о типе возвращающего табличное значение параметра, и необходимости создания объекта набора строк возвращающего табличное значение параметра на основе сведений о типе.

Дополнительные сведения см. в подразделе «Статический сценарий» раздела Создание набора строк возвращающего табличное значение параметра.

IOpenRowset::OpenRowset

Используется при отсутствии сведений о типе возвращающего табличное значение параметра, и необходимости создания объекта набора строк возвращающего табличное значение параметра на основе метаданных, полученных от сервера.

Дополнительные сведения см. в подразделе «Динамический сценарий» раздела Создание набора строк возвращающего табличное значение параметра.

ISSCommandWithParameters::SetParameterInfo

Для указания командного параметра возвращающего табличное значение параметра, потребитель указывает тип параметра «table» или «DBTYPE_TABLE» в элементе pwszName структуры DBPARAMBINDINFO. ulParamSize устанавливается на значение ~0. Дополнительные сведения см. в подразделе «Спецификация возвращающего табличное значение параметра» раздела Выполняет команды, содержащие возвращающие табличное значение параметры.

ISSCommandWithParameters::SetParameterProperties

Задает свойства, определенные для возвращающих табличные значения параметров, например имя схемы, имя типа, порядок столбца и столбцы по умолчанию.

Потребитель указывает порядковый номер параметра в элементе iOrdinal структуры SSPARAMPROPS. Запрошенный набор свойств — DBPROPSET_SQLSERVERPARAMETER.

ISSCommandWithParameters::GetParameterInfo

Возвращает типы всех параметров в указанную команду.

Для возвращающих табличные значения параметров, поле wType в структуре DBPARAMINFO будет иметь тип DBTYPE_TABLE. Для определения неизвестной длины поле ulParamSize будет установлено в значение ~0.

ISSCommandWithParameters::GetParameterProperties

Возвращает дополнительные сведения о типе для параметров типа DBTYPE_TABLE.

Потребитель указывает порядковый номер параметра в элементе iOrdinal структуры SSPARAMPROPS. Потребитель может запросить любое свойство из набора свойств DBPROPSET_SQLSERVERPARAMETER, перечисленных в ISSCommandWithParameters::SetParameterProperties.

Поскольку потребителю неизвестен тип возвращающего табличное значение параметра, поставщик должен установить правильные значения свойств SSPROP_PARAM_TYPE_TYPENAME, SSPROP_PARAM_TYPE_SCHEMANAME и SSPROP_PARAM_TYPE_CATALOGNAME. Оставшиеся свойства, SSPROP_PARAM_TABLE_DEFAULT_COLUMNS и SSPROP_PARAM_TABLE_COLUMN_SORT_ORDER, сохранят значения по умолчанию. После обнаружения потребителем имени типа возвращающего табличное значение параметра, он использует IOpenRowset::OpenRowset для создания этого параметра, указав имя его типа. Дополнительные сведения см. в разделе Обнаружение типа возвращающего табличное значение параметра.

IRowsetInfo::GetProperties

Возвращает свойства набора строк возвращающего табличное значение параметра. Потребитель может использовать эти параметры для оптимальной установки привязок.

IColumnsRowset::GetColumnsRowset

Получает метаданные о таблице SQL Server. Для возвращающих табличные значения параметров этот же интерфейс предоставляет подробные метаданные о каждом столбце, таком как:

  • DBCOLUMN_FLAGS обозначает поддержку значений типа NULL в бите DBCOLUMNFLAGS_ISNULLABLE.

  • DBCOLUMN_ISUNIQUE обозначает, имеет ли столбец идентификатор.

  • DBCOLUMN_COMPUTEMODE обозначает, является ли столбец вычисляемым.

IAccessor::CreateAccessor

Для привязки объекта набора строк возвращающего табличное значение параметра создается метод доступа с элементом wType, установленным в значение DBTYPE_TABLE. Структура DBOBJECT будет содержать IID_IRowset или любой другой допустимый интерфейс объекта набора данных в элементе iid. Оставшиеся поля обрабатываются тем же способом, как и DBTYPE_IUNKNOWN.