Parameter Prosedur Tersimpan Tidak Padan: "Prosedur atau Fungsi Menjangka Parameter Yang Tidak Dibekalkan"
Apabila bekerja dengan sambungan pangkalan data, adalah penting untuk menyelaraskan parameter yang ditakrifkan dalam prosedur tersimpan dengan yang dihantar dari kod panggilan. Kegagalan berbuat demikian boleh mengakibatkan ralat seperti "Prosedur atau fungsi 'SHOWuser' mengharapkan parameter '@userID', yang tidak dibekalkan."
Dalam contoh yang disediakan, prosedur tersimpan SHOWuser dijangka menerima tiga parameter: @userName, @password dan @emailAddress. Walau bagaimanapun, kod tersebut cuba melaksanakan prosedur yang disimpan tanpa memberikan nilai untuk parameter @userID, yang digunakan dalam penyataan INSERT dan SELECT berikutnya dalam prosedur.
Menyelesaikan Ketakpadanan Parameter
Untuk menyelesaikan isu, anda perlu memastikan semua parameter yang diperlukan oleh prosedur tersimpan disertakan dalam cmd.Parameters koleksi:
cmd.Parameters.AddWithValue("@userName", userName); cmd.Parameters.AddWithValue("@password", password); cmd.Parameters.AddWithValue("@emailAddress", emailAddress); cmd.Parameters.AddWithValue("@userID", user_id); // Add the missing parameter
Setelah semua parameter yang diperlukan diambil kira, prosedur yang disimpan harus dilaksanakan dengan jayanya tanpa ralat ketidakpadanan parameter.
Pertimbangan Tambahan
Perlu juga diperhatikan bahawa jenis arahan harus dinyatakan secara eksplisit sebagai disimpan prosedur:
cmd.CommandType = System.Data.CommandType.StoredProcedure;
Ini memastikan pelayan pangkalan data mengetahui sifat perintah yang sedang dilaksanakan. Tanpa menyatakan jenis arahan, anda mungkin menghadapi tingkah laku yang tidak dijangka.
Atas ialah kandungan terperinci Mengapa Prosedur Tersimpan Saya Melemparkan Ralat 'Prosedur atau Fungsi Menjangka Parameter Yang Tidak Dibekalkan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!