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


Обнаружение типа возвращающего табличное значение параметра

Пользователь (т. е. клиентское приложение, использующее поставщика OLE DB собственного клиента SQL Server) может обнаруживать тип каждого параметра команды, если текст команды передается поставщику OLE DB. После того, как тип возвращающего табличное значение параметра становится известен, пользователь может определить метаданные для каждого отдельного столбца возвращающего табличное значение параметра.

Сведения о типе параметров процедур поддерживается ICommandWithParameters::GetParameterInfo для большинства типов параметров. Начиная с версии SQL Server 2005, с появлением определяемых пользователем типов и типа данных xml, одного метода GetParameterInfo было недостаточно для этой цели, так как невозможно было определить предоставить сведения об определяемом пользователем типе (имя, схему и каталог) через ICommandWithParameters. Для предоставления расширенных сведений о типе был определен новый интерфейс — ISSCommandWithParameters.

Для возвращающих табличное значение параметров интерфейс ISSCommandWithParameters также используется для обнаружения подробных сведений. Клиент вызывает ISSCommandWithParameters::GetParameterInfo после подготовки объекта команды. Для возвращающих табличное значение параметров элемент wType структуры DBPARAMINFO устанавливается поставщиком в значение DBTYPE_TABLE. Поле ulParamSize структуры DBPARAMINFO имеет значение ~0.

Затем пользователь запрашивает дополнительные свойства (имя каталога типа, имя схемы типа, имя типа возвращающего табличное значение параметра, порядок столбцов и столбцы по умолчанию) с помощью ISSCommandWithParamters::GetParameterProperties.

После того, как имя становится известно, для получения сведений об отдельном столбце пользователь должен либо вызвать IOpenRowset::OpenRowset, либо получить набор строк DBSCHEMA_TABLE_TYPE_COLUMNS путем указания имени типа возвращающего табличное значение параметра в качестве имени таблицы.