Paramètres des instructions

Un paramètre est une variable dans une instruction SQL. Par exemple, supposons qu’une table Composants comporte des colonnes nommées PartID, Description et Price. Pour ajouter un composant sans paramètres, vous devez construire une instruction SQL telle que :

INSERT INTO Parts (PartID, Description, Price) VALUES (2100, 'Drive shaft', 50.00)  

Bien que cette instruction insère un nouvel ordre, il ne s’agit pas d’une bonne solution pour une application d’entrée de commande, car les valeurs à insérer ne peuvent pas être codées en dur dans l’application. Une alternative consiste à construire l’instruction SQL au moment de l’exécution, en utilisant les valeurs à insérer. Cela n’est pas non plus une bonne solution, en raison de la complexité de la construction d’instructions au moment de l’exécution. La meilleure solution consiste à remplacer les éléments de la clause VALUES par des points d’interrogation ( ?) ou des marqueurs de paramètres :

INSERT INTO Parts (PartID, Description, Price) VALUES (?, ?, ?)  

Les marqueurs de paramètres sont ensuite liés à des variables d'applications. Pour ajouter une nouvelle ligne, l’application doit uniquement définir les valeurs des variables et exécuter l’instruction. Le pilote extrait ensuite les valeurs actuelles des variables et les envoie à la source de données. Si l’instruction est exécutée plusieurs fois, l’application peut rendre le processus encore plus efficace en préparant l’instruction.

L’instruction affichée peut être codée en dur dans une application d’entrée de commande pour insérer une nouvelle ligne. Toutefois, les marqueurs de paramètres ne sont pas limités aux applications verticales. Pour toute application, ils facilitent la construction d’instructions SQL au moment de l’exécution en évitant les conversions vers et à partir du texte. Par exemple, l’ID de composant affiché est probablement stocké dans l’application sous la forme d’un entier. Si l’instruction SQL est construite sans marqueurs de paramètres, l’application doit convertir l’ID de composant en texte et la source de données doit la convertir en entier. À l’aide d’un marqueur de paramètre, l’application peut envoyer l’ID de composant au pilote sous forme d’entier, ce qui peut généralement l’envoyer à la source de données sous forme d’entier. Cela enregistre deux conversions. Pour les valeurs de données longues, cela est très important, car les formes de texte de ces valeurs dépassent fréquemment la longueur autorisée d’une instruction SQL.

Les paramètres sont valides uniquement à certains endroits dans les instructions SQL. Par exemple, ils ne sont pas autorisés dans la liste de sélection (la liste des colonnes à renvoyer par une instruction SELECT ), ni sont-ils autorisés en tant qu’opérandes d’un opérateur binaire tel que le signe égal (=), car il serait impossible de déterminer le type de paramètre. En règle générale, les paramètres sont valides uniquement dans les instructions DML (Data Manipulation Language), et non dans les instructions DDL (Data Definition Language). Pour plus d’informations, consultez Marqueurs de paramètres dans l’annexe C : Grammaire SQL.

Lorsque l’instruction SQL appelle une procédure, les paramètres nommés peuvent être utilisés. Les paramètres nommés sont identifiés par leurs noms, et non par leur position dans l’instruction SQL. Ils peuvent être liés par un appel à SQLBindParameter, mais le paramètre est identifié par le champ SQL_DESC_NAME de l’IPD (descripteur de paramètre d’implémentation), et non par l’argument ParameterNumber de SQLBindParameter. Ils peuvent également être liés en appelant SQLSetDescField ou SQLSetDescRec. Pour plus d’informations sur les paramètres nommés, consultez Paramètres de liaison par nom (paramètres nommés) plus loin dans cette section. Pour plus d’informations sur les descripteurs, consultez Descripteurs.

Cette section contient les rubriques suivantes :