Share via


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

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Important

SQL Server Native Client (souvent abrégé en SNAC) a été supprimé dans SQL Server 2022 (16.x) et SQL Server Management Studio 19 (SSMS). Le fournisseur OLE DB pour SQL Server Native Client (SQLNCLI ou SQLNCLI11) et le fournisseur Microsoft OLE DB hérité pour SQL Server (SQLOLEDB) ne sont pas recommandés dans les nouveaux développements. Utilisez à la place le nouveau Microsoft OLE DB Driver (MSOLEDBSQL) pour SQL Server.

Définit les propriétés de paramètre pour chaque paramètre par ordinal ou définit des propriétés de paramètre en bloc en spécifiant un tableau de structures SSPARAMPROPS.

Syntaxe

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

Arguments

cParams[in]
Nombre de structures SSPARAMPROPS dans le tableau rgParamProperties. Si ce nombre est égal à zéro, ISSCommandWithParameters::SetParameterProperties supprime toutes les propriétés qui ont pu être spécifiées pour les paramètres dans la commande.

rgParamProperties[in]
Tableau de structures SSPARAMPROPS à définir.

Codet de retour

La méthode ISSCommandWithParameters::SetParameterProperties retourne les mêmes codes d’erreur que la méthode OLE DB ICommandProperties::SetProperties principale.

Notes

La définition des propriétés de paramètre avec cette méthode est autorisée pour chaque paramètre par ordinal, ou avec un appel unique à ISSCommandWithParameters::SetParameterProperties, une fois SSPARAMPROPS créé à partir du tableau de propriétés.

Vous devez appeler la méthode SetParameterInfo avant d’appeler la méthode ISSCommandWithParameters::SetParameterProperties. Le fait d'appeler SetParameterProperties(0, NULL) efface toutes les propriétés de paramètre spécifiées, tandis que l'appel de SetParameterInfo(0,NULL,NULL) efface toutes les informations sur les paramètres y compris toutes les propriétés qui peuvent être associées à un paramètre.

L’appel d’ISSCommandWithParameters::SetParameterProperties pour spécifier les propriétés d’un paramètre qui n’est pas de type DBTYPE_XML ou DBTYPE_UDT retourne DB_E_ERRORSOCCURRED ou DB_S_ERRORSOCCURRED et marque le champ dwStatus de tous les DBPROPs contenus dans SSPARAMPROPS pour ce paramètre avec DBPROPSTATUS_NOTSET. Le tableau DBPROP de chaque DBPROPSET contenu dans SSPARAMPROPS doit être parcouru pour détecter le paramètre auquel DB_E_ERRORSOCCURRED ou DB_S_ERRORSOCCURRED fait référence.

Si ISSCommandWithParameters::SetParameterProperties est appelé pour spécifier les propriétés de paramètres dont les informations sur les paramètres n’ont pas encore été définies avec SetParameterInfo, le fournisseur retourne E_UNEXPECTED avec le message d’erreur suivant :

La méthode SetParameterProperties ne peut pas être appelée pour les paramètres spécifiés sans appeler auparavant la méthode SetParameterInfo. Vous devez définir les informations de paramètre avant de définir les propriétés de paramètre.

Si l’appel à ISSCommandWithParameters::SetParameterProperties contient des paramètres où les informations sur les paramètres ont été définies et quelques paramètres où les informations sur les paramètres n’ont pas été définies, les propriétés dwStatus dans le DBPROPSET du jeu de propriétés SSPARAMPROPS seront retournées avec DBSTATUS_NOTSET.

La structure SSPARAMPROPS est défini comme suit :

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

Les améliorations apportées au moteur de base de données à compter de SQL Server 2012 (11.x) permettent à ISSCommandWithParameters::SetParameterProperties d'obtenir des descriptions plus exactes des résultats attendus. Ces résultats plus exacts peuvent différer des valeurs retournées ISSCommandWithParameters::SetParameterProperties dans les versions précédentes de SQL Server. Pour plus d’informations, consultez Découverte des métadonnées.

Membre Description
iOrdinal Position ordinale du paramètre transmis.
cPropertySets Nombre de structures DBPROPSET dans rgPropertySets.
rgPropertySets Pointeur vers la mémoire dans lequel retourner un tableau de structures DBPROPSET.

Voir aussi

ISSCommandWithParameters (OLE DB)