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
Het uitvoeren van een commando met tabelwaardige parameters vereist twee fasen:
Specificeer de parametertypes.
Bind de parametergegevens.
Table-Valued Parameterspecificatie
De consument kan het type van de tabel-waarde parameter specificeren. Deze informatie bevat de naam van het tabelwaardige parametertype. Het bevat ook de schemanaam, als het door de gebruiker gedefinieerde tabeltype voor de tabel-waarde parameter niet in het huidige standaardschema voor de verbinding staat. Afhankelijk van serverondersteuning kan de consument ook optionele metadata-informatie specificeren, zoals de volgorde van kolommen, en kan aangeven dat alle rijen voor bepaalde kolommen de standaardwaarden hebben.
Om een tabelwaardige parameter te specificeren, roept de consument ISSCommandWithParameter::SetParameterInfo aan, en optioneel ISSCommandWithParameters::SetParameterProperties. Voor een tabelwaardige parameter heeft het pwszDataSourceType-veld in de DBPARAMBINDINFO-structuur de waarde DBTYPE_TABLE. Het ulParamSize-veld is ingesteld op ~0 om aan te geven dat de lengte onbekend is. Specifieke eigenschappen voor tabelwaardige parameters, zoals schemanaam, typenaam, kolomvolgorde en standaardkolommen, kunnen worden ingesteld via ISSCommandWithParameters::SetParameterProperties.
Table-Valued Parameterbinding
Een tabelwaardige parameter kan elk rijsetobject zijn. De provider leest uit dit object terwijl tabelparameters tijdens de uitvoering naar de server worden gestuurd.
Om de tabelwaarde parameter te binden, roept de consument IAccessor::CreateAccessor aan. Het wType-veld van de DBBINDING-structuur voor de tabel-waarde parameter is ingesteld op DBTYPE_TABLE. Het pObject-lid van de DBBINDING-structuur is niet-NULL, en het iid-lid van het pObject is ingesteld op IID_IRowset of een andere tabel-waarde parameter rowset-objectinterfaces. De overige velden in de DBBINDING-structuur moeten op dezelfde manier worden ingesteld als voor gestreamde BLOBs.
In de bindings voor de tabel-waarde parameter en het rowset-object dat aan een tabel-waarde parameter is gekoppeld, gelden de volgende beperkingen:
De enige statuswaarden die zijn toegestaan voor tabelwaardige parameters in de kolom van de rijset zijn DBSTATUS_S_ISNULL en DBSTATUS_S_OK. DBSTATUS_S_DEFAULT zal resulteren in een fout, en de gebonden statuswaarde wordt ingesteld op DBSTATUS_E_BADSTATUS.
Een tabelwaardige parameter kan worden gemarkeerd met de status DBSTATUS_S_DEFAULT. De enige geldige waarden zijn DBSTATUS_S_DEFAULT en DBSTATUS_S_OK. Wanneer de status wordt ingesteld op DBSTATUS_S_DEFAULT, komt de waarde van de tabel-waarde parameter overeen met een lege tabel.
Alleen-lezen kolommen in tabelwaardige parameters (identiteit of berekende kolommen) moeten als standaard worden gemarkeerd met behulp van de eigenschap SSPROP_PARAM_TABLE_DEFAULT_COLUMNS. Kolommen met een standaardwaarde moeten ook als standaard worden gemarkeerd via SSPROP_PARAM_TABLE_DEFAULT_COLUMNS eigenschap om de standaardwaarde te kunnen gebruiken voor de datawaarden van de kolom voor een bepaalde tabelwaardige parameter. De provider negeert de datawaarden die zijn gebonden voor de kolommen die als standaard zijn gemarkeerd.
Gegevens worden naar de server gestuurd voor kolommen met DBPROP_COL_AUTOINCREMENT of SSPROP_COL_COMPUTED, tenzij SSPROP_PARAM_TABLE_DEFAULT ook is ingesteld.
Zie ook
Table-Valued Parameters (OLE DB)
Gebruik Table-Valued parameters (OLE DB)