[英]Too Many Arguments Error with Stored Procedure
我有以下代碼,該代碼通過將參數與表中的主鍵匹配來觸發存儲過程以刪除記錄。 我通過debug ang運行了代碼,一切都分配正確,但是我不斷收到錯誤消息,指出指定了太多參數。 我認為這與我的存儲過程有關,因為正確分配了值。
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
Dim CurrentCommand As String = e.CommandName
Dim CurrentRow As Integer = Int32.Parse(e.CommandArgument.ToString())
Dim ID As String = GridView1.DataKeys(CurrentRow).Value
sqlds.DeleteParameters.Add("KeyOpType", ID)
sqlds.Delete()
End Sub
SQL Server 2008中的存儲過程
ALTER PROCEDURE [dbo].[GetGenInfo_DeleteMines]
(@KeyOpType int)
AS
Delete FROM GenInfo_OpType
Where KeyOpType = @KeyOpType
您在哪里設置刪除命令? 我們確定它正在調用正確的過程嗎? 我認為這就是您要嘗試做的。 檢查一下:
不知道這是否可以解決您的問題。
似乎您在存儲過程中缺少BEGIN。 我對此並不陌生,但我認為這是必需的。
ALTER PROCEDURE [dbo].[GetGenInfo_DeleteMines]
(@KeyOpType int)
AS
BEGIN <-----------------------------------MISSING THIS
Delete FROM GenInfo_OpType
Where KeyOpType = @KeyOpType
另外,我在vb代碼中看不到您在哪里調用SP。
編輯:給出進一步的示例。
我在gv行命令上的代碼如下所示(如果它來自gv上的按鈕/鏈接,則必須將CommandName =“ SomeCommandName”添加到gv上的控件中)
Protected Sub gvName_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvName.RowCommand
Dim tGrid As GridView = DirectCast(sender, GridView)
Dim tIndex As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = Nothing
Select Case e.CommandName
Case "SomeCommandName"
CallToDelete(tGrid.DataKeys(tIndex).Value)
End Select
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.