Rumah >pangkalan data >tutorial mysql >Mengapa Panggilan Prosedur Tersimpan Saya Gagal dengan 'Terlalu Banyak Argumen Ditentukan'?

Mengapa Panggilan Prosedur Tersimpan Saya Gagal dengan 'Terlalu Banyak Argumen Ditentukan'?

Linda Hamilton
Linda Hamiltonasal
2024-12-27 08:06:09370semak imbas

Why Does My Stored Procedure Call Fail with

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!

Kenyataan:
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