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
Linda Hamiltonoriginal
2024-12-30 14:08:10727parcourir

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();
}

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();
}

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!

Déclaration:
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