Создание набора строк возвращающего табличное значение параметра

Применимо к: SQL Server Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)

Скачать драйвер OLE DB

Несмотря на то, что потребители могут предоставить для возвращающих табличные значения параметров любой объект набора строк, типичные объекты наборов строк реализуются для конечных хранилищ данных и таким образом предоставляют ограниченную производительность. По этой причине драйвер OLE DB для SQL Server разрешает потребителям создавать специализированный объект набора строк на основе данных в памяти. Этот специальный объект набора данных в памяти является новым COM-объектом, называемым набором строк возвращающего табличное значение параметра. Он предлагает функциональные возможности, аналогичные набору параметров.

Объекты набора строк возвращающего табличное значение параметра создаются явным образом поставщиком для входных параметров через несколько интерфейсов уровня сеанса. Для одного возвращающего табличное значение параметра существует один объект набора строк. Потребитель может создавать объекты набора строк возвращающего табличное значение параметра либо путем предоставления уже известных метаданных (статический сценарий), либо путем его обнаружения через интерфейсы поставщика (динамический сценарий). Эти два сценария описаны в следующих разделах.

Статический сценарий

Когда сведения о типе известны, потребитель использует метод ITableDefinitionWithConstraints::CreateTableWithConstraints для создания экземпляра объекта набора строк, соответствующего возвращающему табличное значение параметру.

Поле guid (параметр pTableID) содержит специальный идентификатор GUID (CLSID_ROWSET_TVP). Элемент pwszName содержит имя типа возвращающего табличное значение параметра, который потребитель хочет создать. Поле eKind будет установлено в значение DBKIND_GUID_NAME. Это имя требуется при использовании нерегламентированной инструкции SQL. При вызове процедуры имя является необязательным.

Для статистической обработки потребитель передает параметр pUnkOuter и управляющий интерфейс IUnknown.

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

Для элемента rgPropertySets каждой структуры DBCOLUMNDESC потребитель может указать дополнительные свойства для каждого столбца. Эти свойства принадлежат набору свойств DBPROPSET_SQLSERVERCOLUMN. Они позволяют указать для каждого столбца вычисляемые настройки и настройки по умолчанию. Также они поддерживают существующие свойства столбца, например допустимость значений NULL и идентификатор.

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

Чтобы получить сведения о состояниях наличия NULL, уникальности, вычисляемости и обновления для каждого столбца, потребитель может применять метод IColumnsRowset::GetColumnsRowset или IColumnsInfo::GetColumnInfo. Эти методы предоставляют подробные сведения о каждом столбце набора строк возвращающего табличные значения параметра.

Потребитель указывает тип каждого столбца возвращающего табличные значения параметра. Это действие аналогично тому, как указываются столбцы при создании таблицы в SQL Server. Потребитель получает объект набора строк для возвращающего табличные значения параметра от OLE DB Driver for SQL Server через выходной параметр ppRowset.

Динамический сценарий

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

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

Параметры pTableID и pUnkOuter устанавливаются так же, как и в статическом сценарии. После этого драйвер OLE DB для SQL Server получает от сервера сведения о типе (сведения о столбцах и ограничениях) и возвращает объект набора строк возвращающего табличные значения параметра через параметр ppRowset. Эта операция требует связи с сервером, поэтому выполняется не так быстро, как статический сценарий. Динамический сценарий работает только с параметризованными вызовами процедур.

См. также:

Возвращающие табличное значение параметры (OLE DB)
Использование возвращающих табличные значения параметров (OLE DB)