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

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

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

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

  1. Задать тип параметра.

  2. Выполнить привязку данных параметра.

Спецификация возвращающих табличные значения параметров

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

Чтобы указать возвращающий табличное значение параметр, потребитель вызывает ISSCommandWithParameter::SetParameterInfo и при необходимости — ISSCommandWithParameters:: SetParameterProperties. Для возвращающего табличное значение параметра поле pwszDataSourceType структуры DBPARAMBINDINFO имеет значение DBTYPE_TABLE. Полю ulParamSize присваивается значение ~0, которое указывает, что длина неизвестна. Конкретные свойства возвращающих табличное значение параметров, таких как имя схемы, имя типа, порядок столбцов, столбцы по умолчанию, можно задать с помощью метода ISSCommandWithParameters::SetParameterProperties.

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

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

Чтобы привязать возвращающий табличное значение параметр, потребитель вызывает метод IAccessor::CreateAccessor. Полю wType структуры DBBINDING возвращающего табличное значение параметра присваивается значение DBTYPE_TABLE. Элемент pObject структуры DBBINDING имеет значение, отличное от NULL, а элементу iid элемента 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, чтобы их можно было использовать как значения данных столбца для конкретного возвращающего табличное значение параметра. Поставщик не учитывает значения данных, привязанные к столбцам, помеченным как столбцы по умолчанию.

  • Данные для столбцов с атрибутом DPPROP_COL_AUTOINCREMENT или SSPROP_COL_COMPUTED будут переданы на сервер, за исключением столбцов, для которых также задан атрибут SSPROP_PARAM_TABLE_DEFAULT.

См. также:

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