Rumah >pangkalan data >tutorial mysql >Mengapa Panggilan Prosedur Tersimpan Saya Gagal dengan 'Terlalu Banyak Argumen Ditentukan'?
Terlalu Banyak Parameter dalam Panggilan Prosedur Tersimpan
Mesej ralat "Prosedur atau fungsi xxx terlalu banyak argumen yang ditentukan" menunjukkan ketidakpadanan antara nombor daripada parameter yang dinyatakan dalam panggilan prosedur tersimpan dan bilangan parameter yang diisytiharkan dalam prosedur tersimpan definisi.
Dalam kes tertentu ini, anda memanggil prosedur tersimpan "[dbo].[M_UPDATES]" yang seterusnya memanggil prosedur tersimpan lain "[etl_M_Update_Promo]". Ralat berlaku kerana "[etl_M_Update_Promo]" diisytiharkan menerima hanya satu parameter @GenId, tetapi anda menghantar dua parameter (@GenID dan @Description) dalam panggilan daripada "[dbo].[M_UPDATES]".
Mengenal pasti Parameter Tidak Padan
Untuk mengenal pasti ketidakpadanan yang tepat, periksa pengisytiharan prosedur tersimpan "[etl_M_Update_Promo]":
ALTER PROCEDURE [etl].[etl_M_Update_Promo] @GenId bigint = 0 as
Pengisytiharan ini menentukan bahawa prosedur mengambil satu parameter, @GenId, yang merupakan jenis data besar dan mempunyai nilai lalai 0. Dalam panggilan anda daripada "[dbo].[M_UPDATES]", anda melepasi dua parameter, tetapi parameter kedua (@Description) tidak diisytiharkan dalam prosedur takrifan, justeru menyebabkan ralat.
Melaraskan Senarai Parameter
Untuk menyelesaikan ralat, anda perlu mengubah suai pengisytiharan "[etl_M_Update_Promo]" untuk memasukkan yang kedua parameter:
ALTER PROCEDURE [etl].[etl_M_Update_Promo] @GenId bigint = 0, @Description NVARCHAR(50) AS .... Rest of your code.
Dengan menyatakan @Description sebagai parameter tambahan dalam pengisytiharan prosedur, anda boleh kini luluskannya secara sah apabila memanggil "[etl_M_Update_Promo]" daripada "[dbo].[M_UPDATES]".
Atas ialah kandungan terperinci Mengapa Panggilan Prosedur Tersimpan Saya Gagal dengan 'Terlalu Banyak Argumen Ditentukan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!