"Nama Pembolehubah '@' Telah Diisytiharkan" Ralat dalam Pertanyaan SQL
Apabila melaksanakan pertanyaan SQL, adalah penting untuk memastikan bahawa nama pembolehubah yang diisytiharkan dalam kumpulan pertanyaan atau prosedur tersimpan adalah unik. Ralat ini sering berlaku apabila menggunakan penggantian pembolehubah dengan awalan '@'.
Punca Ralat
Dalam kod yang disediakan, contoh kedua '@LockState' dalam koleksi parameter mencetuskan ralat. Ini kerana setiap parameter mesti mempunyai nama unik dalam pertanyaan yang sama.
Penyelesaian
Untuk menyelesaikan ralat ini, laksanakan salah satu daripada penyelesaian berikut:
Gunakan rwd.command.Parameters.Clear() selepas setiap lelaran gelung untuk mengalih keluar parameter yang ditambahkan sebelum ini, memastikan bahawa lelaran seterusnya bermula dengan set baharu.
for (long counter = from; counter <= to; counter++) { rwd.command.Parameters.Clear(); // ... (remaining code) }
Isytiharkan parameter di luar gelung dan tetapkan nilai dalam gelung. Ini memastikan parameter ditakrifkan sekali sahaja.
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; }
Dengan mengikuti langkah ini, anda boleh memastikan nama pembolehubah unik dalam pertanyaan anda, menghalang ralat "Nama pembolehubah '@' telah diisytiharkan" dan memastikan pelaksanaan yang lancar.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Nama Pembolehubah '@' Telah Diisytiharkan' dalam Pertanyaan SQL Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!