Erreur "Le nom de la variable '@' a déjà été déclaré" dans les requêtes SQL
Lors de l'exécution de requêtes SQL, il est crucial de s'assurer que les noms de variables déclarés dans le lot de requêtes ou dans la procédure stockée sont uniques. Cette erreur se produit souvent lors de l'utilisation de la substitution de variable avec le préfixe '@'.
Cause de l'erreur
Dans le code fourni, la deuxième instance de '@LockState' dans la collection de paramètres déclenche l’erreur. En effet, chaque paramètre doit avoir un nom unique au sein de la même requête.
Résolution
Pour résoudre cette erreur, implémentez l'une des solutions suivantes :
Utiliser rwd.command.Parameters.Clear() après chaque itération de boucle pour supprimer les paramètres précédemment ajoutés, garantissant que la prochaine itération commence avec un nouvel ensemble.
for (long counter = from; counter <= to; counter++) { rwd.command.Parameters.Clear(); // ... (remaining code) }
Déclarez les paramètres en dehors de la boucle et attribuez des valeurs à l'intérieur de la boucle. Cela garantit que les paramètres ne sont définis qu'une seule fois.
rwd.command.Parameters.Add(new SqlParameter("@LockState", SqlDbType.NVarChar)); rwd.command.Parameters.Add(new SqlParameter("@card_descr", SqlDbType.NVarChar)); for (long counter = from; counter <= to; counter++) { // ... (remaining code) rwd.command.Parameters["@LockState"].Value = 1; rwd.command.Parameters["@card_descr"].Value = txt_desc2.Text; }
En suivant ces étapes, vous pouvez garantir des noms de variables uniques dans vos requêtes, évitant ainsi l'erreur « Le nom de variable '@' a déjà été déclaré » et garantissant exécution transparente.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!