Partage via


Liaison de paramètres dans ODBC

Chaque paramètre d’une instruction SQL doit être associé ou lié à une variable dans l’application avant l’exécution de l’instruction. Lorsque l’application lie une variable à un paramètre, elle décrit cette variable ( adresse, type de données C, et ainsi de suite) au pilote. Il décrit également le paramètre lui-même : type de données SQL, précision, et ainsi de suite. Le pilote stocke ces informations dans la structure qu’elle conserve pour cette instruction et utilise les informations pour récupérer la valeur de la variable lorsque l’instruction est exécutée.

Les paramètres peuvent être liés ou rebondir à tout moment avant l’exécution d’une instruction. Si un paramètre est rebondi après l’exécution d’une instruction, la liaison ne s’applique pas tant que l’instruction n’est pas réexécutée. Pour lier un paramètre à une variable différente, une application rebine simplement le paramètre avec la nouvelle variable ; la liaison précédente est automatiquement publiée.

Une variable reste liée à un paramètre jusqu’à ce qu’une variable différente soit liée au paramètre, jusqu’à ce que tous les paramètres ne soient pas liés en appelant SQLFreeStmt avec l’option SQL_RESET_PARAMS, ou jusqu’à ce que l’instruction soit publiée. Pour cette raison, l’application doit s’assurer que les variables ne sont pas libérées tant qu’elles ne sont pas liées. Pour plus d’informations, consultez Allocation et libération des mémoires tampons.

Étant donné que les liaisons de paramètres sont uniquement des informations stockées dans la structure gérée par le pilote de l’instruction, elles peuvent être définies dans n’importe quel ordre. Elles sont également indépendantes de l’instruction SQL exécutée. Par exemple, supposons qu’une application lie trois paramètres, puis exécute l’instruction SQL suivante :

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

Si l’application exécute immédiatement l’instruction SQL

SELECT * FROM Orders WHERE OrderID = ?, OpenDate = ?, Status = ?  

sur le même handle d’instruction, les liaisons de paramètre pour l’instruction INSERT sont utilisées, car il s’agit des liaisons stockées dans la structure d’instruction. Dans la plupart des cas, il s’agit d’une mauvaise pratique de programmation et devrait être évitée. Au lieu de cela, l’application doit appeler SQLFreeStmt avec l’option SQL_RESET_PARAMS pour dissocier tous les anciens paramètres, puis lier de nouveaux paramètres.

Cette section contient les rubriques suivantes :