繁体   English   中英

存储的过程显示错误“过程或函数'Dlete_Selected'期望参数'@id',未提供”

[英]Stored procedure showing an error“ Procedure or function 'Dlete_Selected' expects parameter '@id', which was not supplied”

我用参数调用了存储过程,但显示错误

过程或函数“ Dlete_Selected”期望参数“ @id”(未提供)

这是我的存储过程:

CREATE procedure [dbo].[Delete_Selected]
    (@id bigint)
AS
    DELETE FROM Properties 
    WHERE Id = @id

这是我的代码:

protected void btnDeleteSelected_Click(object sender, EventArgs e)
{
    Button btn = (Button)sender;

    cmd.CommandText = "Delete_Selected";
    cmd.Parameters.AddWithValue("@id", Request.QueryString["id"]);
    cmd.Parameters.Clear();
    DataTable dtb = dboMrk.GetDataTableFrmDB(cmd);

    if (dtb.Rows.Count > 0)
    {
        dtlstdata.DataSource = dtb;
        dtlstdata.DataBind();
    }
}

去掉:

cmd.Parameters.Clear();

您删除刚刚添加的所有参数。

插入后立即清除参数。

cmd.Parameters.AddWithValue("@id", Request.QueryString["id"]);
cmd.Parameters.Clear();

您需要删除cmd.Parameters.Clear(); 使它工作。

修改您的代码,

您已经传递了Request.QueryString["id"] ,该返回字符串值。 在sp中,您已指定big int类型。

因此,将其转换,例如Convert.ToInt64(Request.QueryString["id"])

再加上一行

cmd.CommandType = CommandType.StoredProcedure;

在这行之后

cmd.CommandText = "Dlete_Selected";

希望这对您有用。 完成此操作后,如果您卡在任何地方,请发表评论。 谢谢 :)

尝试这个:

protected void btnDeleteSelected_Click(object sender, EventArgs e)
{
    Button btn = (Button)sender;


    cmd.CommandText = "Dlete_Selected";
    cmd.Parameters.AddWithValue("@id", Request.QueryString["id"]);
    //cmd.Parameters.Clear();
    DataTable dtb = dboMrk.GetDataTableFrmDB(cmd);

    if (dtb.Rows.Count > 0)
    {
        dtlstdata.DataSource = dtb;
        dtlstdata.DataBind();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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