簡體   English   中英

存儲過程的參數過多錯誤

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

您在哪里設置刪除命令? 我們確定它正在調用正確的過程嗎? 我認為這就是您要嘗試做的。 檢查一下:

帶有GridView和CRUD的SQLDataSource

不知道這是否可以解決您的問題。

似乎您在存儲過程中缺少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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM