Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformový systém (PDW)
SQL databáze v Microsoft Fabric
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)