SQL クエリでの「変数名 '@' はすでに宣言されています」エラー
SQL クエリを実行するときは、次のことを確認することが重要です。クエリ バッチまたはストアド プロシージャ内で宣言された変数名は一意です。このエラーは、'@' プレフィックスを使用した変数置換を使用するときによく発生します。
エラーの原因
提供されたコードでは、'@LockState' の 2 番目のインスタンスパラメータコレクション内にあるとエラーが発生します。これは、各パラメータが同じクエリ内で一意の名前を持つ必要があるためです。
解決策
このエラーを解決するには、次の解決策のいずれかを実装します。
各ループ反復の後に rwd.command.Parameters.Clear() を使用して、以前に追加されたパラメーターを削除し、次の反復が新しいセットで開始されるようにします。
for (long counter = from; counter <= to; counter++) { rwd.command.Parameters.Clear(); // ... (remaining code) }
ループの外でパラメータを宣言し、ループ内で値を割り当てます。これにより、パラメータが 1 回だけ定義されることが保証されます。
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; }
これらの手順に従うことで、クエリ内で変数名を一意にすることができ、「変数名 '@' はすでに宣言されています」エラーを防ぎ、確実に変数名を定義できます。シームレスな実行。
以上がSQL クエリで「変数名 '@' はすでに宣言されています」というエラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。