存储过程或函数需要据称提供的参数
调用存储过程将数据插入 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(); } }
通过仔细检查参数名称、数据类型、命令类型和参数排序,您可以减轻此错误并成功执行您的存储过程。
以上是为什么 My SQL 存储过程会抛出'过程或函数 '...' 需要参数 '@参数名称',但未提供”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!