Je suis désemparé ici, je ne comprends pas pourquoi la procédure n'obtient pas ce paramètre ...
Procédure ( procInfoColor
):
ALTER PROCEDURE [dbo].[procInfoColor]
(@ID int)
AS
BEGIN
SELECT Id, Code, [Description], IsActive FROM tblColor WHERE Id = @ID
END
Code 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
Commande de trace SQL (données texte) - La commande est générée par l'appel de procédure VB.NET:
exec sp_executesql N'procInfoColor',N'@ID int',@ID=9
Erreur:
Msg 201, Niveau 16, État 4, Procédure procInfoColor, Ligne 2 La procédure ou la fonction 'procInfoColor' attend le paramètre '@ID', qui n'a pas été fourni.
Je peux très bien exécuter cette procédure lorsque vous exécutez la procédure par un clic droit, mais lorsque j'appelle la procédure depuis mon application VB.Net, le message d'erreur indiquant que @ID
n'est pas fourni est @ID
. J'ai vérifié la trace SQL et il semble bien qu'elle me soit fournie?
Toute aide serait appréciée.
Double possible de: Exécuter la procédure stockée avec les paramètres dans Dapper
Essayez d’utiliser le nom de paramètre nommé pour le type de commande lors de l’appel de 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