Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les paramètres sont marqués dans le texte de commande avec le caractère de point d’interrogation. Par exemple, l’instruction SQL suivante est marquée pour un paramètre d’entrée unique :
{call SalesByCategory('Produce', ?)}
Pour améliorer les performances en réduisant le trafic réseau, le fournisseur OLE DB SQL Server Native Client ne dérive pas automatiquement les informations de paramètre, sauf si ICommandWithParameters ::GetParameterInfo ou ICommandPrepare ::P repare est appelé avant d’exécuter une commande. Cela signifie que le fournisseur OLE DB SQL Server Native Client n’est pas automatiquement :
Vérifiez l’exactitude du type de données spécifié avec ICommandWithParameters ::SetParameterInfo.
Mappez à partir du DBTYPE spécifié dans les informations de liaison d’accesseur au type de données SQL Server approprié pour le paramètre.
Les applications recevront des erreurs possibles ou une perte de précision avec l’une de ces méthodes s’ils spécifient des types de données qui ne sont pas compatibles avec le type de données SQL Server du paramètre.
Pour vous assurer que cela ne se produit pas, l’application doit :
Vérifiez que pwszDataSourceType correspond au type de données SQL Server pour le paramètre si iCommandWithParameters ::SetParameterInfo en dur.
Vérifiez que la valeur DBTYPE liée au paramètre est du même type que le type de données SQL Server pour le paramètre si vous codez en dur un accesseur.
Codez l’application pour appeler ICommandWithParameters ::GetParameterInfo afin que le fournisseur puisse obtenir dynamiquement les types de données SQL Server des paramètres. Notez que cela entraîne un aller-retour réseau supplémentaire vers le serveur.
Remarque
Le fournisseur ne prend pas en charge l’appel d’ICommandWithParameters ::GetParameterInfo pour toute instruction SQL Server UPDATE ou DELETE contenant une clause FROM ; pour n’importe quelle instruction SQL en fonction d’une sous-requête contenant des paramètres ; pour les instructions SQL contenant des marqueurs de paramètre dans les deux expressions d’une comparaison, comme, ou des prédicats quantifiés ; ou requêtes où l’un des paramètres est un paramètre d’une fonction. Lors du traitement d’un lot d’instructions SQL, le fournisseur ne prend pas également en charge l’appel d’ICommandWithParameters ::GetParameterInfo pour les marqueurs de paramètres dans les instructions après la première instruction du lot. Les commentaires (/* */) ne sont pas autorisés dans la commande Transact-SQL.
Le fournisseur OLE DB SQL Server Native Client prend en charge les paramètres d’entrée dans les commandes d’instruction SQL. Sur les commandes d’appel de procédure, le fournisseur OLE DB SQL Server Native Client prend en charge les paramètres d’entrée, de sortie et d’entrée/sortie. Les valeurs des paramètres de sortie sont retournées à l’application en cas d’exécution (uniquement s’il n’y a pas d’ensembles de lignes retournés) ou lorsque tous les ensembles de lignes retournés sont épuisés par l’application. Pour vous assurer que les valeurs retournées sont valides, utilisez IMultipleResults pour forcer la consommation de l’ensemble de lignes.
Les noms des paramètres de procédure stockée ne doivent pas être spécifiés dans une structure DBPARAMBINDINFO. Utilisez NULL pour la valeur du membre pwszName pour indiquer que le fournisseur OLE DB SQL Server Native Client doit ignorer le nom du paramètre et utiliser uniquement l’ordinal spécifié dans le membre rgParamOrdinalsd’ICommandWithParameters ::SetParameterInfo. Si le texte de la commande contient à la fois des paramètres nommés et non nommés, tous les paramètres non nommés doivent être spécifiés avant les paramètres nommés.
Si le nom d’un paramètre de procédure stockée est spécifié, le fournisseur OLE DB SQL Server Native Client vérifie le nom pour s’assurer qu’il est valide. Le fournisseur OLE DB SQL Server Native Client retourne une erreur lorsqu’il reçoit un nom de paramètre erroné du consommateur.
Remarque
Pour exposer la prise en charge de SQL Server XML et de types définis par l’utilisateur (UDT), le fournisseur OLE DB SQL Server Native Client implémente une nouvelle interface ISSCommandWithParameters .