You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用WidgetInsert存储过程提示@Name参数未提供但已传参的问题排查

解决存储过程调用提示参数未提供的问题

你遇到的这个问题其实很常见,我一眼就注意到你的代码里漏了关键的一步——没有把SqlCommand的CommandType设置为StoredProcedure!

默认情况下,SqlCommand的CommandType是CommandType.Text,这时候它会把[dbo].[WidgetInsert]当成一段普通的SQL文本来执行,而不是去调用对应的存储过程。即使你添加了参数,SQL Server也不会把这些参数和存储过程的参数关联起来,自然就会提示你缺少@Name参数了。

修复步骤

只需要在创建SqlCommand之后,添加一行代码设置CommandType:

internal static void WidgetInsert(string cnnString, Widget item) { 
    using (SqlConnection connection = new SqlConnection(cnnString)) { 
        SqlCommand command = new SqlCommand("[dbo].[WidgetInsert]", connection);
        // 加上这行关键配置!
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.AddWithValue("@Name", item.Name); 
        command.Parameters.AddWithValue("@Description", item.Description); 
        connection.Open(); 
        command.ExecuteNonQuery(); 
    } 
}

其他可选排查方向(结合你的情况概率较低,但可以确认)

  • 核对存储过程内的参数名是否确实为@Name,有没有拼写错误(比如多字符/少字符)——虽然SQL Server不区分大小写,但拼写不匹配会直接导致参数关联失败。
  • 再次确认item.Name的有效值状态:如果是null,AddWithValue会自动转为DBNull.Value,但此时错误提示通常是“参数不能为null”而非“未提供参数”,所以这个可能性很小,但也可以快速验证下。

内容的提问来源于stack exchange,提问作者Tarzan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:15:29