繁体   English   中英

尽管提供了参数,但存储过程需要参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM