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