Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memperbaiki 'Nama pembolehubah '@' telah diisytiharkan' Ralat dalam Batch Query SQL?

Bagaimana untuk Memperbaiki 'Nama pembolehubah '@' telah diisytiharkan' Ralat dalam Batch Query SQL?

Susan Sarandon
Lepaskan: 2025-01-01 08:24:11
asal
706 orang telah melayarinya

How to Fix

Konflik Nama Pembolehubah dalam Kelompok Pertanyaan SQL

Apabila melaksanakan pertanyaan SQL, adalah penting untuk memastikan keunikan dalam nama pembolehubah dalam satu kelompok atau prosedur tersimpan . Ralat "Nama pembolehubah '@' telah pun diisytiharkan" menunjukkan bahawa berbilang pembolehubah dengan nama yang sama telah ditakrifkan.

Untuk menyelesaikannya, fokus pada blok kod yang disediakan:

private void btn_lock2_Click(object sender, EventArgs e)
{
    // ...
    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;
        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;
        // ...
    }
}
Salin selepas log masuk

Kesilapan terletak pada penambahan berulang kali parameter dalam gelung. Sebaliknya, alihkan penciptaan parameter di luar gelung:

// Moved outside the 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++)
{
    // ...
    rwd.command.Parameters["@LockState"].Value = 1;
    rwd.command.Parameters["@card_descr"].Value = txt_desc2.Text;
    // ...
}
Salin selepas log masuk

Sebagai alternatif, pertimbangkan untuk mengosongkan parameter dalam gelung:

for (long counter = from; counter <= to; counter++)
{
    rwd.command.Parameters.Clear();
    // ...
}
Salin selepas log masuk

Dengan mengikuti pengesyoran ini, anda boleh menghapuskan ralat dan memastikan keunikan nama pembolehubah dalam pertanyaan SQL anda.

Atas ialah kandungan terperinci Bagaimana untuk Memperbaiki 'Nama pembolehubah '@' telah diisytiharkan' Ralat dalam Batch Query SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan