ASP.NET MVC 调用存储过程,但未提供错误参数

我目前有一个 ASP.NET MVC 应用程序试图执行一个存储过程。


我的存储过程是这样的:


ALTER PROCEDURE [dbo].[_SelectFromQry] 

    @queryname NVARCHAR(255)

AS

BEGIN

    SELECT TBLNAME, TBLCOL, TBLCOLLABEL, POSITION

    FROM QRY

    WHERE QUERYNAME = @queryname

END

在我的控制器中,我编写了这样的代码:


var result =  db.Database.SqlQuery<RESULT_FROM_QRY>("_SelectFromQry", new   SqlParameter("queryname","INVAVAIL")).ToList(); 

当应用程序到达这一行时,我得到一个


SqlCilent.SqlExcepction:过程“_SelectFromQry”需要未提供的参数“@queryname”。


我不确定我的代码是否正确调用了存储过程?


叮当猫咪
浏览 198回答 2
2回答

慕娘9325324

可能您需要在查询字符串中包含可能的参数名称,如下所示:var&nbsp;result&nbsp;=&nbsp;db.Database.SqlQuery<RESULT_FROM_QRY>("_SelectFromQry&nbsp;@queryname",&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;SqlParameter("queryname",&nbsp;"INVAVAIL")).ToList();或者可选地使用EXEC前缀:var&nbsp;result&nbsp;=&nbsp;db.Database.SqlQuery<RESULT_FROM_QRY>("EXEC&nbsp;_SelectFromQry&nbsp;@queryname",&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;SqlParameter("queryname",&nbsp;"INVAVAIL")).ToList();由于您的存储过程声明了一个输入参数而不指定默认值NULL(即使用必需参数而不是可选参数),因此必须提供参数名称才能执行它。

慕哥6287543

大概问题是您在 SqlParameter 构造函数中使用“queryname”而不是“@queryname”,即:new&nbsp;SqlParameter("queryname","INVAVAIL")应该是这样的:new&nbsp;SqlParameter("@queryname","INVAVAIL")
打开App,查看更多内容
随时随地看视频慕课网APP