【问题标题】:"Procedure expects parameter which was not supplied" I DID SUPPLY“程序需要未提供的参数”我确实提供了
【发布时间】:2012-05-10 01:00:44
【问题描述】:

我在尝试通过存储过程更新数据库中的一行时遇到此错误

过程或函数“sp_A_Update”需要参数“@Misc”,但未提供。

但我已经提供了这个:

command.Parameters.AddWithValue("@Misc", inspection.Misc);

这是我的整个代码,去掉了其他参数来缩短

using (SqlCommand command = new SqlCommand("sp_Agent_Inspection_Update", new SqlConnection (Configuration.ConnectionString)))
{
    command.CommandType = CommandType.StoredProcedure;

    PropertyInfo[] propertyInfo = inspection.GetType().GetProperties();

    command.Parameters.AddWithValue("@Misc", inspection.Misc);
    (lots of other params here...)
    command.Parameters.AddWithValue("@RepairNotes", inspection.RepairNotes);

    // OPEN CONNECTION
    command.Connection.Open();

    // EXECUTE QUERY
    int rowsAffected =  command.ExecuteNonQuery();

    command.Connection.Close();
    return Boolean.Parse(rowsAffected.ToString());
}

有人有什么想法吗?

【问题讨论】:

  • 错误显示“sp_A_Update”,但代码显示“sp_Agent_Inspection_Update”。你确定你在调试正确的代码吗?
  • 我没有看到你在任何地方定义inspection。可能是我对 C# 不了解,但也许你需要定义它?
  • 你能发布至少部分存储过程吗?
  • 我会假设 sp_Agent_Inspection_Update 中的 SQL 执行 sp_A_Update,它没有将参数 @Misc 传递给它。
  • 我似乎记得您需要确保在代码中添加参数的顺序与它们在 SQL 存储过程定义中出现的顺序相同。

标签: c# sql


【解决方案1】:

除了你正在调用的存储过程的名称有明显的错误。

识别和解决此问题的最简单方法是运行 SQL 探查器。在执行代码时进行跟踪,看看有什么 你传递给 SQL,你会看到它的期望。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多