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

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

DDD
リリース: 2024-12-26 03:18:15
オリジナル
638 人が閲覧しました

Why Does My Stored Procedure Get a

ストアド プロシージャで指定された引数が多すぎます

問題:

ストアド プロシージャの実行時別のストアド プロシージャを呼び出すと、「プロシージャまたは関数の数が多すぎます」というエラー メッセージが表示される場合があります。引数が指定されています。」このエラーは、呼び出されたプロシージャに渡される引数の数と、プロシージャが受け入れるように宣言されている引数の数が一致していないことを示します。

識別:

エラーを識別するには引数を指定するには、呼び出されるプロシージャの定義で宣言されたパラメータを調べます。これらのパラメーターを呼び出し元のプロシージャから渡された引数と比較します。不一致により、過剰な引数がどこにあるかが特定されます。

提供されたコードの分析:

指定されたコード スニペットでは、ストアド プロシージャ [ を呼び出しているためにエラーが発生します。 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 つのオプションがあります:

  1. 余分な引数を削除します:
    [dbo].[M_UPDATES] のコードを変更して 2 番目の引数を削除します。引数:

    EXEC etl.etl_M_Update_Promo @GenID
    ログイン後にコピー
  2. 欠落しているパラメータを追加します:
    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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート