[英]SQL Server stored procedure expects parameter even though the parameter is provided
[英]Stored procedure expects parameter though parameter is provided
我正在使用VS 2015和SQL Server 2016。
在我的C#代码中,我正在分配存储过程期望的参数,但是由于我的存储过程期望一个参数而出现错误。
我的存储过程:
CREATE PROCEDURE [dbo].[SDDeleteTAR]
@TARKey int
AS
BEGIN
DELETE technical_assistance_requests
WHERE request_id = @TARKey
END
我的C#代码:
Label id = (Label)e.Item.FindControl("REQUEST_ID");
var x = id.Text;
int rid = Convert.ToInt32(x);
string cs = ConfigurationManager.AppSettings.Get("connectionString").ToString();
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("SDDeleteTAR", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@RequestID", rid);
con.Open();
cmd.ExecuteNonQuery();
}
运行此命令时,出现以下错误:
过程或函数“ SDDeleteTAR”需要未提供的参数“ @TARKey”。
我正在传递必需的参数,并以CommandType.StoredProcedure
身份执行命令类型,但无法解决此问题。
我还检查了同样的问题在StackOverflow上这里 ,但提交者缺少命令类型声明。
在指出我要去哪里的问题上,我们将提供任何帮助,我们将不胜感激。
您应该将@RequestID
更改为@TARKey
。 因为您的存储过程需要带有该名称的参数。
您可以使用SqlCommandBuilder.DeriveParameters安全地执行存储过程,而无需直接指定名称。 这将从服务器检索参数并为您创建SQLParameter集合。
SqlCommand cmd = new SqlCommand("SDDeleteTAR", con);
SqlCommandBuilder.DeriveParameters(cmd);
cmd.Parameters[0].Value = rid;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.