Sdílet prostřednictvím


Provádění příkazů obsahujících parametry Table-Valued

Platí na:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytický platformový systém (PDW)SQL databáze v Microsoft Fabric

Stáhnout ovladač OLE DB

Provedení příkazu s tabulkovými parametry vyžaduje dvě fáze:

  1. Specifikujte typy parametrů.

  2. Připojte parametrová data.

Table-Valued Specifikace parametrů

Spotřebitel může určit typ parametru s tabulkovou hodnotou. Tyto informace zahrnují název typu parametru s hodnotou tabulky. Zahrnuje také název schématu, pokud uživatelem definovaný typ tabulky pro parametr s tabulkovou hodnotou není v aktuálním výchozím schématu pro spojení. V závislosti na podpoře serveru může uživatel také zadat volitelné metadatové informace, například pořadí sloupců, a může uvádět, že všechny řádky pro konkrétní sloupce mají výchozí hodnoty.

Pro určení parametru s tabulkovou hodnotou spotřebitel volá ISSCommandWithParameter::SetParameterInfo a volitelně ISSCommandWithParameters::SetParameterProperties. Pro parametr s tabulkovou hodnotou má pole pwszDataSourceType ve struktuře DBPARAMBINDINFO hodnotu DBTYPE_TABLE. Pole ulParamSize je nastaveno na ~0, aby označilo, že délka není známá. Specifické vlastnosti pro tabulkově hodnotové parametry, jako je název schématu, název typu, pořadí sloupců a výchozí sloupce, lze nastavit pomocí ISSCommandWithParameters::SetParameterProperties.

Table-Valued Vázání parametrů

Parametr s tabulkovou hodnotou může být jakýkoli objekt v sadě řádků. Poskytovatel čte z tohoto objektu a během vykonávání posílá serveru tabulkové parametry.

Pro navázání parametru s tabulkovou hodnotou spotřebitel volá IAccessor::CreateAccessor. Pole wType struktury DBBINDING pro parametr s tabulkovou hodnotou je nastaveno na DBTYPE_TABLE. Člen pObject struktury DBBINDING není NULL a iid člen pObjectu je nastaven na rozhraní IID_IRowset nebo jiné tabulkově hodnotové řádkové rozhraní. Zbývající pole ve struktuře DBBINDINGu by měla být nastavena stejně jako pro streamované BLOBy.

V vazbách pro parametr s tabulkovou hodnotou a objekt řádku spojený s parametrem tabulkové hodnoty platí následující omezení:

  • Jediné stavové hodnoty povolené pro tabulkové řádky parametrů jsou DBSTATUS_S_ISNULL a DBSTATUS_S_OK. DBSTATUS_S_DEFAULT povede k selhání a hodnota stavu bound bude nastavena na DBSTATUS_E_BADSTATUS.

  • Parametr s tabulkovou hodnotou lze označit stavem DBSTATUS_S_DEFAULT. Jediné platné hodnoty jsou DBSTATUS_S_DEFAULT a DBSTATUS_S_OK. Když je stav nastaven na DBSTATUS_S_DEFAULT, hodnota parametru tabulky odpovídá prázdné tabulce.

  • Sloupce pouze pro čtení v tabulkových parametrech (identita nebo vypočítané sloupce) musí být označeny jako výchozí pomocí vlastnosti SSPROP_PARAM_TABLE_DEFAULT_COLUMNS. Sloupce s výchozí hodnotou musí být také označeny jako výchozí pomocí vlastnosti SSPROP_PARAM_TABLE_DEFAULT_COLUMNS, aby bylo možné výchozí hodnotu použít pro datové hodnoty sloupce pro konkrétní parametr tabulkové hodnoty. Poskytovatel ignoruje omezení datových hodnot pro sloupce označené jako výchozí.

  • Data budou odeslána serveru pro sloupce s DBPROP_COL_AUTOINCREMENT nebo SSPROP_COL_COMPUTED, pokud není nastaveno také SSPROP_PARAM_TABLE_DEFAULT.

Viz také

Table-Valued Parametry (OLE DB)
Použijte Table-Valued parametry (OLE DB)