Rumah >pangkalan data >tutorial mysql >Mengapa Prosedur Tersimpan Saya Mendapat Ralat 'Terlalu Banyak Argumen'?

Mengapa Prosedur Tersimpan Saya Mendapat Ralat 'Terlalu Banyak Argumen'?

Barbara Streisand
Barbara Streisandasal
2024-12-22 14:29:221040semak imbas

Why Does My Stored Procedure Get a

Prosedur atau Fungsi Mempunyai Terlalu Banyak Argumen Ditentukan

Apabila menghadapi mesej ralat ini, ia menunjukkan bahawa bilangan argumen yang berlebihan telah disediakan semasa pemanggilan prosedur atau fungsi tersimpan. Mengenal pasti punca ralat boleh menjadi penting untuk menyelesaikan isu.

Mengenal pasti Sumber Ralat

Dalam senario yang diberikan, ralat berlaku semasa memanggil yang disimpan prosedur [dbo].[M_UPDATES], yang seterusnya menggunakan prosedur tersimpan lain, [etl_M_Update_Promo]. Setelah diperiksa, terbukti bahawa [dbo].[M_UPDATES] cuba memanggil [etl_M_Update_Promo] dengan dua parameter, manakala pengisytiharan [etl_M_Update_Promo] hanya menetapkan satu parameter.

Kod untuk [dbo].[M_KEMASKINI]

EXEC etl.etl_M_Update_Promo @GenID, @Description

Kod untuk [etl_M_Update_Promo]

ALTER PROCEDURE [etl].[etl_M_Update_Promo]
@GenId bigint = 0
as

Seperti yang anda lihat, [etl_M_Update_Promo] diisytiharkan kepada ambil hanya parameter @GenId, mengakibatkan ralat mesej.

Resolusi

Untuk menyelesaikan isu ini, adalah perlu untuk mengubah suai pengisytiharan [etl_M_Update_Promo] untuk memasukkan parameter tambahan, @Description. Dengan berbuat demikian, fungsi akan dapat menampung dua parameter yang disediakan oleh [dbo].[M_UPDATES].

Kod Kemas Kini untuk [etl_M_Update_Promo]

ALTER PROCEDURE [etl].[etl_M_Update_Promo]
@GenId bigint = 0,
@Description NVARCHAR(50)
AS

Selepas mengemas kini perisytiharan, ralat harus diselesaikan, membenarkan prosedur berfungsi sebagai dimaksudkan.

Atas ialah kandungan terperinci Mengapa Prosedur Tersimpan Saya Mendapat Ralat 'Terlalu Banyak Argumen'?. 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