Sdílet prostřednictvím


Table-Valued Vytvoření parametrové sady řádků

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

Ačkoli spotřebitelé mohou poskytnout jakýkoli objekt řádkové sady pro tabulkové parametry, typické objekty řádků jsou implementovány proti backendovým datovým úložištím, a proto poskytují omezený výkon. Z tohoto důvodu umožňuje OLE DB Driver pro SQL Server uživatelům vytvářet specializovaný objekt sady řádků nad daty v paměti. Tento speciální objekt řádků v paměti je nový COM objekt nazývaný tabulková parametrová sada (table-valued parameter rowset). Poskytuje funkce podobné sadám parametrů.

Objekty řádků s parametry s tabulkovými hodnotami jsou explicitně vytvářeny uživatelem pro vstupní parametry prostřednictvím více rozhraní na úrovni relace. Existuje jedna instance objektu řádku parametru s tabulkovou hodnotou na každý parametr s tabulkovou hodnotou. Spotřebitel může vytvářet řádkové objekty parametrů s tabulkovou hodnotou buď poskytnutím již známých metadat (statický scénář), nebo jejich objevením prostřednictvím rozhraní poskytovatele (dynamický scénář). Následující části popisují tyto dva scénáře.

Statický scénář

Když jsou informace o typu známy, spotřebitel použije ITableDefinitionWithConstraints::CreateTableWithConstraints k vytvoření objektu řádku parametru s tabulkovou hodnotou, který odpovídá parametru s tabulkovou hodnotou.

Pole guid (parametr pTableID ) obsahuje speciální GUID (CLSID_ROWSET_TVP). Člen pwszName obsahuje název typu parametru s tabulkovou hodnotou, který chce spotřebitel instancovat. Pole eKind bude nastaveno na DBKIND_GUID_NAME. Tento název je vyžadován, pokud je příkaz ad hoc SQL; Název je volitelný, pokud jde o procedurální volání.

Pro agregaci spotřebitel předá parametr pUnkOuter s řídícím IUnknown.

Vlastnosti objektu řádků s hodnotou parametru tabulky jsou pouze pro čtení, takže se od spotřebitele neočekává, že by nastavoval žádné vlastnosti v rgPropertySets.

Pro člena rgPropertySets každé struktury DBCOLUMNDESC může uživatel specifikovat další vlastnosti pro každý sloupec. Tyto vlastnosti patří do množiny DBPROPSET_SQLSERVERCOLUMN vlastností. Umožňují vám určit vypočítaná a výchozí nastavení pro každý sloupec. Podporují také existující vlastnosti sloupců, jako je neplatnost a identita.

Pro získání odpovídajících informací z objektu řádkové sady parametrů s tabulkovou hodnotou uživatel používá IRowsetInfo::GetProperties.

Pro získání informací o null, unique, vypočítaném a aktualizačním stavu každého sloupce může uživatel použít IColumnsRowset::GetColumnsRowset nebo IColumnsInfo::GetColumnInfo. Tyto metody poskytují podrobné informace o každém sloupci řádků parametrů s tabulkovou hodnotou.

Spotřebitel specifikuje typ každého sloupce parametru s tabulkovou hodnotou. Je to podobné tomu, jak se sloupce zadávají při vytváření tabulky v SQL Serveru. Spotřebitel získá objekt řádkové sady parametrů s tabulkovou hodnotou z ovladače OLE DB pro SQL Server prostřednictvím výstupního parametru ppRowset .

Dynamický scénář

Když spotřebitel nemá informace o typu, měl by použít IOpenRowset::OpenRowset k instancování objektů řádků parametrů s tabulkovou hodnotou. Vše, co musí spotřebitel poskytovateli poskytnout, je název typu.

V tomto scénáři poskytovatel získává informace o typu řádkové sady s hodnotou tabulky od serveru jménem spotřebitele.

Parametry pTableID a pUnkOuter by měly být nastaveny jako ve statickém scénáři. Ovladač OLE DB pro SQL Server pak získá informace o typu (informace o sloupcích a omezení) ze serveru a vrací objekt řádku parametru s hodnotou tabulky přes parametr ppRowset . Tato operace vyžaduje komunikaci se serverem, a proto nefunguje tak dobře jako statický scénář. Dynamický scénář funguje pouze s parametrizovanými voláními procedur.

Viz také

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