2017-04-19 41 views
0

我稱與參數的存儲過程,但它示出了一個錯誤存儲的過程「過程或函數‘Dlete_Selected’預計參數‘@id’,但未提供該」

過程或函數' 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(); 
    } 
} 
+2

的可能的複製[存儲過程或函數需要參數未供給(http://stackoverflow.com/questions/19703653/stored-procedure-或功能期望參數,哪些不是提供) – VDWWD

+0

或http://stackoverflow.com/questions/368642/procedure-expects-parameter-which-was-n- supplied – VDWWD

+0

cmd.Parameters.Clear( );刪除這個,也請把值轉換爲大整數 –

回答

1

刪除:

cmd.Parameters.Clear(); 

您刪除您剛纔添加的所有參數。

1

參數在插入後立即被清除。

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

您需要刪除cmd.Parameters.Clear();才能使其正常工作。

0

修改代碼,

您已通過Request.QueryString["id"]返回字符串值。 並在sp中指定了大的int類型。這條線

cmd.CommandText = "Dlete_Selected"; 

希望以後

所以它轉換一樣,Convert.ToInt64(Request.QueryString["id"])

,也可以添加一條線,

cmd.CommandType = CommandType.StoredProcedure; 

,這會爲你工作。 這樣做後,如果你堅持任何地方然後PLZ評論。謝謝:)

0

試試這個:

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(); 
    } 
} 
相關問題