Partager via


Marqueurs de paramètres (moteur de base de données)

Les marqueurs de paramètres sont pris en charge par les API de bases de données ADO, OLE DB et ODBC. Ce sont des points d'interrogation (?) insérés à la place d'une expression d'entrée ou de sortie dans une instruction Transact-SQL. Ils rendent une application plus performante lorsque la même instruction Transact-SQL est exécutée plusieurs fois avec des valeurs différentes dans les expressions d'entrée et de sortie.

Par exemple, un utilisateur a donné à une application cinq symboles de stock différents et l'application doit appeler une procédure stockée qui obtient les données en cours de chaque stock. L'application peut effectuer les opérations suivantes :

  • Préparation de l'instruction Transact-SQL ci-après :

    EXEC GetQuoteProcedure @StockSymbolParameter = ?
    
  • Liaison d'une variable d'application et du marqueur de paramètre (?).

  • Exécution d'une boucle :

    1. Déplacement du symbole de stock suivant dans la variable liée.
    2. Exécution de l'instruction pour extraire les données de ce stock.

Les marqueurs de paramètres ne sont pas mappés uniquement aux paramètres de procédures stockées. Les marqueurs de paramètres peuvent être utilisés partout où une expression d'entrée est utilisée. Par exemple :

UPDATE HumanResources.Employees
SET Title = ?
WHERE EmployeeID = ?

Les marqueurs de paramètres permettent également de mapper des paramètres de sortie et des codes de retour de procédures stockées. Lorsque l'application exécute une procédure stockée, le fournisseur OLE DB ou le pilote ODBC déplace les valeurs de données des paramètres de sortie ou des codes de retour dans les variables liées aux marqueurs de paramètres.

Par exemple, une application peut exécuter la procédure suivante. Cette procédure renvoie un code de retour de type entier et un paramètre de sortie de type caractère.

  1. Préparation d'une instruction :

    {? = CALL MyProc (?)}
    
  2. Liaison du premier marqueur de paramètre à une variable de type entier et du second marqueur à un tableau de caractères.

  3. Exécution de l'instruction.

  4. Extraction ou annulation de tous les ensembles de résultats retournés par la procédure stockée.

À ce stade, le fournisseur Microsoft OLE DB pour SQL Server ou le pilote ODBC SQL Server aura placé les valeurs du code de retour et du paramètre de sortie dans les variables liées. Microsoft SQL Server 2005 retourne les valeurs du paramètre de sortie et du code de retour dans le dernier paquet renvoyé au client. L'application doit donc traiter ou annuler tous les ensembles de résultats retournés par la procédure stockée avant d'avoir accès aux valeurs du code de retour et du paramètre de sortie.

L'API ADO procède différemment pour exécuter les procédures stockées : Une application ADO effectue les opérations suivantes :

  1. définit le type d'objet Command sur adCmdStoredProc ;
  2. attribue au texte de commande le nom de la procédure ;
  3. construit une collection Parameters liant tous les paramètres et les codes de retour à des variables d'application ;
  4. exécute l'objet Command.

Les marqueurs de paramètres sont associés à un objet base de données ayant un type de données spécifique. Si l'application associe un marqueur de paramètre à une variable dont le type de données diffère de celui de l'objet base de données associé, le fournisseur OLE DB ou le pilote ODBC doit convertir les données. Par exemple, si une application associe un code de retour de type entier à un tableau de caractères, le fournisseur OLE DB ou le pilote ODBC doit convertir l'entier du code de retour en chaîne de caractères. Pour plus d'informations sur les conversions de types de données prises en charge, reportez-vous à la documentation concernant le fournisseur OLE DB pour SQL Server et le pilote ODBC SQL Server.

Voir aussi

Autres ressources

Running Stored Procedures (OLE DB)
Command Parameters
Using Statement Parameters

Aide et Informations

Assistance sur SQL Server 2005