Utilisation de paramètres d’instruction - Liaison de paramètres
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Chaque marqueur de paramètre d’une instruction SQL doit être associé ou lié à une variable dans l’application avant que l’instruction puisse être exécutée. Pour ce faire, appelez la fonction SQLBindParameter . SQLBindParameter décrit la variable de programme (adresse, type de données C, et ainsi de suite) au pilote. Cette fonction identifie également le marqueur de paramètre en indiquant sa valeur ordinale puis décrit les caractéristiques de l'objet SQL qu'il représente (type de données SQL, précision, etc.).
Les marqueurs de paramètre peuvent être liés ou liés une nouvelle fois à tout moment avant l'exécution d'une instruction. Une liaison de paramètre reste en vigueur jusqu'à ce que l'un des événements suivants se produise :
Un appel à SQLFreeStmt avec le paramètre Option défini sur SQL_RESET_PARAMS libère tous les paramètres liés au handle d’instruction.
Un appel à SQLBindParameter avec ParameterNumber défini sur l’ordinal d’un marqueur de paramètre lié libère automatiquement la liaison précédente.
Une application peut également lier des paramètres à des tableaux de variables de programme pour traiter une instruction SQL par lots. Il existe deux types de liaison de tableau :
Une liaison selon les colonnes est effectuée lorsque chaque paramètre individuel est lié à son propre tableau de variables.
La liaison à l’échelle des colonnes est spécifiée en appelant SQLSetStmtAttr avec l’attribut défini sur SQL_ATTR_PARAM_BIND_TYPE et ValuePtr défini sur SQL_PARAM_BIND_BY_COLUMN.
Une liaison selon les lignes est effectuée lorsque tous les paramètres dans l'instruction SQL sont liés en tant qu'unité à un tableau de structures qui contiennent les variables individuelles pour les paramètres.
La liaison au niveau des lignes est spécifiée en appelant SQLSetStmtAttr avec l’attribut défini sur SQL_ATTR_PARAM_BIND_TYPE et ValuePtr défini sur la taille de la structure contenant les variables du programme.
Lorsque le pilote ODBC SQL Server Native Client envoie des paramètres de chaîne de caractères ou binaires au serveur, il padte les valeurs à la longueur spécifiée dans le paramètre SqlBindParameter ColumnSize . Si une application ODBC 2.x spécifie 0 pour ColumnSize, le pilote place la valeur du paramètre sur la précision du type de données. La précision est 8000 quand elle est connectée aux serveurs SQL Server, 255 lorsqu’elle est connectée à des versions antérieures de SQL Server. ColumnSize est en octets pour les colonnes variant.
SQL Server prend en charge la définition de noms pour les paramètres de procédure stockée. ODBC 3.5 a également introduit la prise en charge des paramètres nommés utilisés lors de l’appel de procédures stockées SQL Server. Cette prise en charge peut être utilisée pour :
appeler une procédure stockée et fournir des valeurs pour un sous-ensemble des paramètres définis pour la procédure stockée ;
spécifier les paramètres dans un ordre différent dans l'application de l'ordre spécifié quand la procédure stockée a été créée.
Les paramètres nommés ne sont pris en charge que lors de l’utilisation de l’instruction Transact-SQL EXECUTE ou de la séquence d’échappement ODBC CALL pour exécuter une procédure stockée.
Si SQL_DESC_NAME est défini pour un paramètre de procédure stockée, tous les paramètres de procédure stockée dans la requête doivent également définir SQL_DESC_NAME. Si les littéraux sont utilisés dans les appels de procédure stockée, où les paramètres ont SQL_DESC_NAME défini, les littéraux doivent utiliser le format « valeur de nom=», où le nom est le nom du paramètre de procédure stockée (par exemple, . @p1) Pour plus d’informations, consultez Paramètres de liaison par nom (paramètres nommés).