Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform Systeem (PDW)
SQL-database in Microsoft Fabric
OLE DB-stuurprogramma downloaden
Hoewel consumenten elk rowset-object voor tabel-gewaardeerde parameters kunnen leveren, worden typische rowset-objecten geïmplementeerd tegen back-end datastores en bieden ze daardoor beperkte prestaties. Om deze reden stelt de OLE DB Driver for SQL Server consumenten in staat een gespecialiseerd rowset-object te creëren bovenop in-memory data. Dit speciale, in-memory rowset-object is een nieuw COM-object, een tabelwaardige parameterrowset, genoemd. Het biedt functionaliteit vergelijkbaar met parametersets.
Tabelwaardige parameter-rijsetobjecten worden expliciet door de consument gemaakt voor invoerparameters via meerdere sessieniveau-interfaces. Er is één instantie van een tabelwaardeparameter rijsetobject per tabelwaardeparameter. De consument kan de tabelwaardige parameter-rowsetobjecten aanmaken door metadata-informatie te verstrekken die al bekend is (statisch scenario), of door deze te ontdekken via providerinterfaces (dynamisch scenario). De volgende secties beschrijven deze twee scenario's.
Statisch scenario
Wanneer de type-informatie bekend is, gebruikt de consument ITableDefinitionWithConstraints::CreateTableWithConstraints om een tabelwaarde-parameter rijsetobject te instantiëren dat overeenkomt met een tabel-waarde parameter.
Het guid-veld (pTableID-parameter ) bevat de speciale GUID (CLSID_ROWSET_TVP). Het pwszName-lid bevat de naam van het tabel-waarde parametertype dat de consument wil instantiëren. Het eKind-veld wordt ingesteld op DBKIND_GUID_NAME. Deze naam is vereist wanneer de instructie ad hoc SQL is; De naam is optioneel als het een procedure-aanroep is.
Voor aggregatie geeft de consument de pUnkOuter-parameter door met de controlerende IUnknown.
De tabelwaardige parameters van het rowset-objectobject zijn alleen-lezen, dus van de consument wordt niet verwacht dat hij eigenschappen in rgPropertySets instelt.
Voor het rgPropertySets-lid van elke DBCOLUMNDESC-structuur kan de consument extra eigenschappen voor elke kolom specificeren. Deze eigenschappen behoren tot de DBPROPSET_SQLSERVERCOLUMN eigenschapsset. Ze stellen je in staat om berekende en standaardinstellingen voor elke kolom aan te geven. Ze ondersteunen ook bestaande kolomeigenschappen, zoals nullability en identity.
Om overeenkomstige informatie op te halen uit een tabel-waarde parameter rowset-object, gebruikt de consument IRowsetInfo::GetProperties.
Om informatie over de null, unieke, berekende en update-status van elke kolom op te halen, kan de consument IColumnsRowset::GetColumnsRowset of IColumnsInfo::GetColumnInfo gebruiken. Deze methoden bieden gedetailleerde informatie over elke kolom met een tabel gewaardeerde parameter-rijset.
De consument specificeert het type van elke kolom van de tabelwaardige parameter. Het lijkt op hoe kolommen worden gespecificeerd wanneer een tabel wordt aangemaakt in SQL Server. De consument verkrijgt een tabel-waarde parameter rowset-object uit de OLE DB-driver voor SQL Server via de ppRowset-uitvoerparameter .
Dynamisch scenario
Wanneer de consument geen type-informatie heeft, zou hij IOpenRowset::OpenRowset moeten gebruiken om tabel-waarde parameter rowset-objecten te instantiëren. Het enige wat de consument aan de aanbieder hoeft te geven is de typenaam.
In dit scenario verkrijgt de provider type-informatie over een tabel-waarde parameter rowset-object van de server namens de consument.
De pTableID- en pUnkOuter-parameters moeten worden ingesteld zoals in het statische scenario. De OLE DB-driver voor SQL Server haalt vervolgens de type-informatie (kolominformatie en constraints) van de server en retourneert een tabel-waarde parameter rowset-object via de ppRowset-parameter . Deze operatie vereist communicatie met de server en presteert daarom minder goed dan het statische scenario. Het dynamische scenario werkt alleen met geparametriseerde procedure-aanroepen.
Zie ook
Table-Valued Parameters (OLE DB)
Gebruik Table-Valued parameters (OLE DB)