プロシージャまたは関数の引数が多すぎます: 問題の特定と解決
別のストアド プロシージャを呼び出すストアド プロシージャを実行する場合、次のことが考えられます。 「プロシージャまたは関数 [名前] に指定された引数が多すぎます。」というエラーが発生します。このエラーは、呼び出し側プロシージャが呼び出されたプロシージャに多すぎる引数を渡そうとしていることを示します。
エラー メッセージについて
エラー メッセージは、特定のストアド プロシージャがまたは、関数 (この場合は「etl_M_Update_Promo」) に、処理できる以上の引数が指定されています。これは、プロシージャを呼び出すコードが、プロシージャが受信するように設計されているよりも多くのパラメータをプロシージャに送信しようとしていることを意味します。
過剰な引数の特定
過剰な引数を特定するには引数を指定する場合は、呼び出しコードでプロシージャに渡されるパラメータの数と、呼び出されるプロシージャの定義で宣言された数を比較します。この場合、2 つのパラメーター ("@GenID" と "@Description") を指定して "etl_M_Update_Promo" を呼び出していますが、プロシージャには宣言されたパラメーター ("@GenId") が 1 つだけあります。
解決問題
解決策は、プロシージャのパラメーター リストに合わせて呼び出しコードを変更することです。必要に応じて、プロシージャ定義を変更することもできます。この特定のケースでの問題を解決する方法は次のとおりです:
呼び出しコードを変更する: 必要なパラメーターのみを提供するように「etl_M_Update_Promo」を呼び出すコードを調整します。 "@GenID."
EXEC etl.etl_M_Update_Promo @GenID
プロシージャ定義の変更: または、次の行を追加して 2 つのパラメーターを受け入れるように "etl_M_Update_Promo" の定義を変更することもできます。 line:
@Description NVARCHAR(50)
改訂された手順定義:
ALTER PROCEDURE [etl].[etl_M_Update_Promo] @GenId bigint = 0, @Description NVARCHAR(50) AS .... Rest of your code.
以上がストアド プロシージャで「プロシージャまたは関数の引数が多すぎます」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。