ホームページ >データベース >mysql チュートリアル >ストアド プロシージャで「引数が多すぎます」エラーが発生するのはなぜですか?

ストアド プロシージャで「引数が多すぎます」エラーが発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-22 14:29:221030ブラウズ

Why Does My Stored Procedure Get a

プロシージャまたは関数に指定された引数が多すぎます

このエラー メッセージが表示された場合は、実行中に過剰な数の引数が指定されたことを示します。ストアド プロシージャまたはストアド関数の呼び出し。問題を解決するには、エラーの原因を特定することが重要です。

エラーの原因の特定

指定されたシナリオでは、保存されているメソッドの呼び出し中にエラーが発生します。プロシージャ [dbo].[M_UPDATES]。これにより、別のストアド プロシージャ [etl_M_Update_Promo] が呼び出されます。調べてみると、[dbo].[M_UPDATES] が 2 つのパラメーターを指定して [etl_M_Update_Promo] を呼び出そうとしているのに対し、[etl_M_Update_Promo] の宣言では 1 つのパラメーターのみが指定されていることがわかります。

のコード[dbo].[M_UPDATES]

EXEC etl.etl_M_Update_Promo @GenID, @Description

[etl_M_Update_Promo]

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

のコード ご覧のとおり、[etl_M_Update_Promo] は次のように宣言されています。 @GenId パラメータのみを取るとエラーが発生しますmessage.

解決策

この問題を解決するには、[etl_M_Update_Promo] の宣言を変更して追加パラメーター @Description を含める必要があります。そうすることで、関数は [dbo].[M_UPDATES].

[etl_M_Update_Promo] の更新コード

ALTER PROCEDURE [etl].[etl_M_Update_Promo]
@GenId bigint = 0,
@Description NVARCHAR(50)
AS
宣言を更新した後、エラーが解決され、プロシージャが意図したとおりに機能できるようになります。

以上がストアド プロシージャで「引数が多すぎます」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。