Partager via


Liaison de paramètres

Chaque marqueur de paramètre dans une instruction SQL doit être associé, ou lié, à une variable dans l'application avant que l'instruction puisse être exécutée. Cela s'effectue en appelant la fonction SQLBindParameter. SQLBindParameter décrit la variable du programme (adresse, type de données C, etc.) 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 descripteur 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.

    Une liaison selon les colonnes est spécifiée en appelant SQLSetStmtAttr avec Attribute ayant pour valeur SQL_ATTR_PARAM_BIND_TYPE et ValuePtr ayant pour valeur 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.

    Une liaison selon les lignes est spécifiée en appelant SQLSetStmtAttr avec Attribute ayant pour valeur SQL_ATTR_PARAM_BIND_TYPE et ValuePtr ayant pour valeur la taille de la structure qui contient les variables de programme.

Lorsque le pilote ODBC SQL Server Native Client envoie des paramètres de chaîne de caractères ou de chaîne binaire au serveur, il complète 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 complète la valeur du paramètre en fonction de la précision du type de données. La précision est 8000 lors d'une connexion à des serveurs SQL Server, 255 lors d'une connexion à des versions antérieures de SQL Server. ColumnSize est en octets pour les colonnes de type 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 sont pris en charge uniquement lors de l'utilisation de l'instruction Transact-SQLEXECUTE 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 des littéraux sont utilisés dans des appels de procédures stockées, dans lesquelles les paramètres ont SQL_DESC_NAME défini, les littéraux doivent se présenter au format 'name=value', où name est le nom de paramètre de procédure stockée (par exemple, @p1). Pour plus d'informations, consultez Binding Parameters by Name (Named Parameters) (en anglais)