ISSCommandWithParameters::SetParameterProperties i SQL Server Native Client (OLE DB)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Important

Den interna SQL Server-klienten (ofta förkortad SNAC) har tagits bort från SQL Server 2022 (16.x) och SQL Server Management Studio 19 (SSMS). Både SQL Server Native Client OLE DB-providern (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny utveckling. Växla till den nya Microsoft OLE DB Driver (MSOLEDBSQL) för SQL Server framöver.

Sätter parameteregenskaperna per parameter med ordinal, eller sätter bulkparameteregenskaper genom att specificera en array av SSPARAMPROPS-strukturer.

Syntax

HRESULT SetParameterProperties(  
      DB_UPARAMS cParams,   
      SSPARAMPROPS rgParamProperties[]);  

Arguments

cParams[in]
Antalet SSPARAMPROPS-strukturer i rgParamProperties-arrayen . Om detta tal är noll kommer ISSCommandWithParameters::SetParameterProperties att ta bort alla egenskaper som kan ha specificerats för några parametrar i kommandot.

rgParamProperties[in]
En array av SSPARAMPROPS-strukturer ska sättas.

Returnera kodvärden

ISSCommandWithParameters::SetParameterProperties-metoden returnerar samma felkoder som kärnmetoden OLE DB ICommandProperties::SetProperties.

Remarks

Att sätta parameteregenskaper med denna metod är tillåtet per parameter per ordinal, eller med ett enda ISSCommandWithParameters::SetParameterProperties-anrop när SSPARAMPROPS har byggts från egenskapsarrayen.

Metoden SetParameterInfo måste anropas innan metoden ISSCommandWithParameters::SetParameterProperties anropas. Anrop SetParameterProperties(0, NULL) rensar alla specificerade parameteregenskaper, medan anrop SetParameterInfo(0,NULL,NULL) rensar all parameterinformation inklusive eventuella egenskaper som kan vara kopplade till en parameter.

Att anropa ISSCommandWithParameters::SetParameterProperties för att specificera egenskaper för en parameter som inte är av typ DBTYPE_XML eller DBTYPE_UDT returnerar DB_E_ERRORSOCCURRED eller DB_S_ERRORSOCCURRED och markerar dwStatus-fältet för alla DBPROP:er som finns i SSPARAMPROPS för den parametern med DBPROPSTATUS_NOTSET. DBPROP-arrayen för varje DBPROPSET som finns i SSPARAMPROPS bör genomsökas för att upptäcka vilken parameter DB_E_ERRORSOCCURRED eller DB_S_ERRORSOCCURRED syftar på.

Om ISSCommandWithParameters::SetParameterProperties anropas för att specificera egenskaperna för parametrar vars parameterinformation ännu inte har satts med SetParameterInfo, returnerar leverantören E_UNEXPECTED med följande felmeddelande:

Metoden SetParameterProperties kan inte anropas för de specificerade parametrarna utan att först anropa metoden SetParameterInfo. Parameterinformationen måste sättas innan parameteregenskaperna ställs in.

Om anropet till ISSCommandWithParameters::SetParameterProperties innehåller vissa parametrar där parameterinformationen har satts, och vissa parametrar där parameterinformationen inte har satts, kommer dwStatus-egenskaperna i DBPROPSET av SSPARAMPROPS-egenskapsuppsättningen att returnera med DBSTATUS_NOTSET.

SSPARAMPROPS-strukturen definieras enligt följande:

struct SSPARAMPROPS {
    DBORDINAL iOrdinal;
    ULONG cPropertySets;
    DBPROPSET *rgPropertySets;
};

Förbättringar i databasmotorn med start i SQL Server 2012 (11.x) gör det möjligt för ISSCommandWithParameters::SetParameterProperties att få mer exakta beskrivningar av de förväntade resultaten. Dessa mer exakta resultat kan skilja sig från de värden som returneras av ISSCommandWithParameters::SetParameterProperties i tidigare versioner av SQL Server. För mer information, se Metadata Discovery.

Medlem Description
iOrdinal Ordinalen för den passerade parametern.
cPropertySets Antalet DBPROPSET-strukturer i rgPropertySets.
rgPropertySets En pekare till minnet för att returnera en array av DBPROPSET-strukturer.