Maison > base de données > tutoriel mysql > Comment résoudre l'erreur SQL « Le nom de la variable « @ » a déjà été déclaré » ?

Comment résoudre l'erreur SQL « Le nom de la variable « @ » a déjà été déclaré » ?

Linda Hamilton
Libérer: 2024-12-30 14:08:10
original
711 Les gens l'ont consulté

How to Resolve the

Le nom de la variable '@' a déjà été déclaré : résolution de la redondance des paramètres

Lorsque vous tentez d'exécuter du code SQL, vous pouvez rencontrer l'erreur "Le nom de la variable '@ LockState' a déjà été déclaré. Les noms de variables doivent être uniques dans un lot de requête ou une procédure stockée. Ce problème est dû à l'inclusion de plusieurs instances du même paramètre dans une boucle.

Pour résoudre cette erreur, vous pouvez soit effacer les paramètres après chaque itération de la boucle, soit ajouter les paramètres avant la boucle.

Effacer les paramètres après chaque itération de boucle

for (long counter = from; counter <= to; counter++) {
    // Clear parameters before adding new ones
    rwd.command.Parameters.Clear();

    string upd = "update card set LockState=@lockstate, card_descr=@card_descr where [cardNumber] = N'{0}'";
    rwd.command.CommandText = upd;
    rwd.command.Parameters.Add(new SqlParameter("@LockState", SqlDbType.NVarChar)).Value = 1;
    rwd.command.Parameters.Add(new SqlParameter("@card_descr", SqlDbType.NVarChar)).Value = txt_desc2.Text;
    rwd.connection.Open();
    rwd.command.ExecuteScalar();
    rwd.connection.Close();
}
Copier après la connexion

Ajout de paramètres avant la boucle et attribution de valeurs à l'intérieur Boucle

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++) {
    string upd = "update card set LockState=@lockstate, card_descr=@card_descr where [cardNumber] = N'{0}'";
    rwd.command.CommandText = upd;

    // Assign values to parameters within the loop
    rwd.command.Parameters["@LockState"].Value = 1;
    rwd.command.Parameters["@card_descr"].Value = txt_desc2.Text;

    rwd.connection.Open();
    rwd.command.ExecuteScalar();
    rwd.connection.Close();
}
Copier après la connexion

En mettant en œuvre l'une ou l'autre de ces solutions, vous pouvez résoudre efficacement le problème de redondance des paramètres et assurer la bonne exécution de votre code SQL.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal