ストアド プロシージャまたは関数は、指定されたとされるパラメータを必要としています
ストアド プロシージャを呼び出して SQL Server データベースにデータを挿入すると、次のような問題が発生する可能性があります。エラー「プロシージャまたは関数 ' ストアド プロシージャ名 ' はパラメータ '@パラメータ名' を予期していますが、そうではありません」供給されました。」このエラー メッセージは、特にストアド プロシージャに正しいパラメータがあり、それらがコードに指定されていることを確認した場合に、混乱する可能性があります。
エラーのトラブルシューティング
この問題を解決するには、以下を徹底的に確認してください:
サンプル コードの更新
ここでは、コマンド タイプとパラメータ値:
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 サイトの他の関連記事を参照してください。