嘗試執行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中文網其他相關文章!