ストアド プロシージャで指定された引数が多すぎます
問題:
ストアド プロシージャの実行時別のストアド プロシージャを呼び出すと、「プロシージャまたは関数の数が多すぎます」というエラー メッセージが表示される場合があります。引数が指定されています。」このエラーは、呼び出されたプロシージャに渡される引数の数と、プロシージャが受け入れるように宣言されている引数の数が一致していないことを示します。
識別:
エラーを識別するには引数を指定するには、呼び出されるプロシージャの定義で宣言されたパラメータを調べます。これらのパラメーターを呼び出し元のプロシージャから渡された引数と比較します。不一致により、過剰な引数がどこにあるかが特定されます。
提供されたコードの分析:
指定されたコード スニペットでは、ストアド プロシージャ [ を呼び出しているためにエラーが発生します。 etl_M_Update_Promo] の 2 つの引数:
EXEC etl.etl_M_Update_Promo @GenID, @Description
ただし、 [etl_M_Update_Promo] は引数を 1 つだけ宣言します:
ALTER PROCEDURE [etl].[etl_M_Update_Promo] @GenId bigint = 0
したがって、SQL Server は、呼び出されたプロシージャが 2 つの引数を渡しているのに 1 つの引数を期待していることを示すエラー メッセージをスローします。
解決策:
問題を解決するには、呼び出される関数に渡される引数の数を調整します。プロシージャが期待する番号を指定します。この場合、2 つのオプションがあります:
余分な引数を削除します:
[dbo].[M_UPDATES] のコードを変更して 2 番目の引数を削除します。引数:
EXEC etl.etl_M_Update_Promo @GenID
欠落しているパラメータを追加します:
2 番目のパラメータを含めるように [etl_M_Update_Promo] の定義を変更します:
ALTER PROCEDURE [etl].[etl_M_Update_Promo] @GenId bigint = 0, @Description NVARCHAR(50) AS .... Rest of the code.
以上がストアド プロシージャで「指定された引数が多すぎます」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。