“过程期望参数未提供...” SQL跟踪指示过程获取参数

时间:2019-02-25 16:20:32

标签: sql-server vb.net tsql ssms dapper

我在这里不知所措,我不明白为什么程序没有得到这个参数...

程序(procInfoColor):

ALTER PROCEDURE [dbo].[procInfoColor]
    (@ID int)
AS
BEGIN
    SELECT Id, Code, [Description], IsActive FROM tblColor WHERE Id = @ID
END

VB.Net代码:

Public Function infoColor(ID As Integer) As List(Of Colors) Implements iMaintenance.infoColor
    Dim p = New DynamicParameters()
    p.Add("@ID", ID, DbType.Int32)

    Try
        Return DbConn.Query(Of Colors)("procInfoColor", p, Nothing, 60, CommandType.StoredProcedure).ToList()
    Catch ex As Exception
    End Try
End Function

SQL跟踪命令(文本数据)-命令由VB.NET过程调用生成:

exec sp_executesql N'procInfoColor',N'@ID int',@ID=9

错误:

  

消息201,级别16,状态4,过程procInfoColor,第2行   过程或函数“ procInfoColor”需要未提供的参数“ @ID”。

通过右键单击执行过程时,我可以很好地运行它,但是当我从VB.Net应用程序调用过程时,却收到此错误消息,指出未提供@ID。我检查了SQL跟踪,并确定它似乎正在提供给我?

我们将不胜感激。

1 个答案:

答案 0 :(得分:3)

可能的副本:Execute stored procedure w/parameters in Dapper

在进行Dapper调用时,尝试为命令类型使用命名的参数名称:

Public Function infoColor(ID As Integer) As List(Of Colors) 
    Implements iMaintenance.infoColor

    Dim p = New DynamicParameters()
    p.Add("@ID", ID, DbType.Int32)

    Try
        Return DbConn.Query(Of Colors)("procInfoColor", 
                                       p, 
                                       Nothing, 
                                       60,
                                       commandType:=CommandType.StoredProcedure ).ToList()
    Catch ex As Exception
    End Try

End Function