Utilisation de paramètres dans les requêtes

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation d'ensembles de données de type requête


Une instruction SQL paramétrée contient des paramètres, ou variables, dont les valeurs peuvent être modifiées pendant la conception ou pendant l'exécution. Les paramètres peuvent remplacer les valeurs des données, comme celles qui sont utilisées pour les comparaisons dans une clause WHERE, qui apparaissent dans une instruction SQL. En général, les paramètres représentent les valeurs des données qui sont passées à l'instruction. Par exemple, dans l'instruction INSERT suivante, les valeurs à insérer sont passées sous forme de paramètres :

INSERT INTO Country (Name, Capital, Population)
VALUES (:Name, :Capital, :Population)

Dans cette instruction SQL, :Name, :Capital et :Population sont des marques de réservation pour les valeurs réelles fournies à l'instruction par votre application au cours de l'exécution. Remarquez que les noms des paramètres commencent par un deux points. Le deux points est requis pour distinguer les noms de paramètres des valeurs littérales. Vous pouvez aussi inclure des paramètres non nommés en insérant un point d'interrogation (?) dans votre requête. Les paramètres non nommés sont identifiés par leur position, puisqu'ils n'ont pas de nom.

Avant que l'ensemble de données puisse exécuter la requête, vous devez fournir une valeur pour chaque paramètre figurant dans le texte de la requête. TQuery, TIBQuery, TSQLQuery et les ensembles de données client utilisent la propriété Params pour stocker ces valeurs. TADOQuery utilise à la place la propriété Parameters. Params (ou Parameters) est une collection d'objets paramètre (Data.DB.TParam ou ADOdb.TParameter), où chaque objet représente un seul paramètre. Quand vous spécifiez le texte de la requête, l'ensemble de données génère cet ensemble d'objets paramètre et (selon le type de l'ensemble de données) initialise les propriétés qu'il peut déduire de la requête.

Remarque :  Vous pouvez supprimer la génération automatique des objets paramètre en réponse au changement du texte de la requête, en définissant la propriété ParamCheck par False. C'est utile pour les instructions DDL (langage de définition des données) contenant des paramètres qui font partie de l'instruction DDL et ne sont pas des paramètres de la requête. Par exemple, l'instruction DDL pour créer une procédure stockée peut définir des paramètres faisant partie de cette procédure stockée. En définissant ParamCheck par False, vous empêchez ces paramètres d'être pris par erreur pour les paramètres de la requête.

Les valeurs de paramètres doivent être liées à l'instruction SQL avant sa première exécution. Les composants requête le font pour vous automatiquement si vous n'appelez pas explicitement la méthode Prepare avant l'exécution d'une requête.

Conseil :  C'est une bonne habitude de programmation de fournir aux paramètres des noms de variable correspondant aux noms des colonnes avec lesquelles ils sont associés. Par exemple, si un nom de colonne est "Number", alors le paramètre qui lui correspond peut être ":Number". L'utilisation de noms correspondants est particulièrement importante si l'ensemble de données utilise une source de données pour obtenir les valeurs des paramètres d'un autre ensemble de données. Ce processus est décrit dans Etablissement de relations maître-détail en utilisant des paramètres.

Les rubriques suivantes expliquent comment spécifier les types de données et les valeurs des paramètres de votre requête :

Voir aussi