«Процедура ожидает параметр, который не был предоставлен ...» Трассировка SQL указывает, что процедура получает параметр - PullRequest
0 голосов
/ 25 февраля 2019

Я в недоумении, я не понимаю, почему процедура не получает этот параметр ...

Процедура (procInfoColor):

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

VB.Сетевой код:

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, и она точно выглядит так, как будто она мне предоставляется?

Любая помощь будет полезна.

1 Ответ

0 голосов
/ 25 февраля 2019

Возможные дубликаты: Выполнить хранимую процедуру с параметрами в 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
...