ホームページ > データベース > mysql チュートリアル > 「変数名 '@' はすでに宣言されています」という SQL エラーを解決するにはどうすればよいですか?

「変数名 '@' はすでに宣言されています」という SQL エラーを解決するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-30 14:08:10
オリジナル
711 人が閲覧しました

How to Resolve the

変数名 '@' はすでに宣言されています: パラメーターの冗長性を解決しています

SQL コードを実行しようとすると、「変数名 '@」というエラーが発生することがあります。 LockState' はすでに宣言されています。変数名はクエリ バッチまたはストアド プロシージャ内で一意である必要があります。」この問題は、ループ内に同じパラメータの複数のインスタンスが含まれているために発生します。

このエラーを解決するには、ループの各反復後にパラメータをクリアするか、ループの前にパラメータを追加します。

各ループ反復後のパラメータのクリア

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();
}
ログイン後にコピー

ループの前にパラメータを追加し、ループ内で値を割り当てるループ

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();
}
ログイン後にコピー

これらのソリューションのいずれかを実装すると、パラメーターの冗長性の問題を効果的に解決し、SQL コードを確実に正常に実行できます。

以上が「変数名 '@' はすでに宣言されています」という SQL エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート