“过程需要未提供的参数...”SQL Trace表示过程获取参数

问题描述 投票:1回答:1

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

程序(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 Trace命令(文本数据) - 命令由VB.NET过程调用生成:

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

错误:

消息201,级别16,状态4,过程procInfoColor,行2过程或函数'procInfoColor'期望参数'@ID',它未提供。

通过右键单击执行该过程时,我可以正常运行,但是当我从VB.Net应用程序调用该过程时,我收到此错误消息,指出未提供@ID。我检查了SQL跟踪,它确实看起来像是提供给我的?

任何帮助都将不胜感激。

sql-server vb.net tsql ssms dapper
1个回答
4
投票

可能重复: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
© www.soinside.com 2019 - 2024. All rights reserved.