首頁 > 資料庫 > 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();
}
登入後複製

在循環之前添加參數並在循環內賦值Loop

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板