ホームページ > データベース > mysql チュートリアル > SQL ストアド プロシージャで「プロシージャまたは関数 '...' はパラメータ '@parameter name' を期待していますが、指定されていません」というエラーがスローされるのはなぜですか?

SQL ストアド プロシージャで「プロシージャまたは関数 '...' はパラメータ '@parameter name' を期待していますが、指定されていません」というエラーがスローされるのはなぜですか?

Barbara Streisand
リリース: 2025-01-06 16:50:40
オリジナル
342 人が閲覧しました

Why Does My SQL Stored Procedure Throw a

ストアド プロシージャまたは関数は、指定されたとされるパラメータを必要としています

ストアド プロシージャを呼び出して SQL Server データベースにデータを挿入すると、次のような問題が発生する可能性があります。エラー「プロシージャまたは関数 ' ストアド プロシージャ名 ' はパラメータ '@パラメータ名' を予期していますが、そうではありません」供給されました。」このエラー メッセージは、特にストアド プロシージャに正しいパラメータがあり、それらがコードに指定されていることを確認した場合に、混乱する可能性があります。

エラーのトラブルシューティング

この問題を解決するには、以下を徹底的に確認してください:

  • パラメータ名とパラメータを確認してくださいデータ型: コード内のパラメーター名とデータ型がストアド プロシージャで定義されているものと正確に一致していることを確認してください。同じ大文字と小文字を使用し、タイプミスを避けてください。
  • コマンド タイプの確認: ストアド プロシージャを呼び出していることを明示的に示すには、コマンド タイプを StoredProcedure として指定します。この設定を省略すると、実行されるコマンドが曖昧になる可能性があります。
  • デフォルト値を無効にする: ストアド プロシージャのパラメータにデフォルト値が定義されている場合は、コード内で明示的に指定する必要があります。カスタム値を指定したくない場合でも。
  • パラメータの順序: パラメータの順序コード内の は、ストアド プロシージャで定義された順序と一致する必要があります。パラメーターが欠落しているか順序が正しくない場合、エラーが発生します。

サンプル コードの更新

ここでは、コマンド タイプとパラメータ値:

public void SHOWuser(string userName, string password, string emailAddress, List<int> preferences)
{
    using var dbcon = new SqlConnection(conn);
    using var cmd = new SqlCommand();

    cmd.Connection = dbcon;
    cmd.CommandType = System.Data.CommandType.StoredProcedure;
    cmd.CommandText = "SHOWuser";

    cmd.Parameters.AddWithValue("@userName", userName);
    cmd.Parameters.AddWithValue("@password", password);
    cmd.Parameters.AddWithValue("@emailAddress", emailAddress);

    dbcon.Open();
    int i = Convert.ToInt32(cmd.ExecuteScalar());

    cmd.Parameters.Clear();
    cmd.CommandText = "tbl_pref";

    foreach (int preference in preferences)
    {
        cmd.Parameters.Clear();
        cmd.Parameters.AddWithValue("@userID", Convert.ToInt32(i));
        cmd.Parameters.AddWithValue("@preferenceID", Convert.ToInt32(preference));

        cmd.ExecuteNonQuery();
    }
}
ログイン後にコピー

パラメータ名、データ タイプ、コマンド タイプ、およびパラメータを注意深く検査する順序を指定すると、このエラーを軽減し、ストアド プロシージャを正常に実行できます。

以上がSQL ストアド プロシージャで「プロシージャまたは関数 '...' はパラメータ '@parameter name' を期待していますが、指定されていません」というエラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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