我目前有一个 ASP.NET MVC 应用程序试图执行一个存储过程。我的存储过程是这样的:ALTER PROCEDURE [dbo].[_SelectFromQry] @queryname NVARCHAR(255)ASBEGIN SELECT TBLNAME, TBLCOL, TBLCOLLABEL, POSITION FROM QRY WHERE QUERYNAME = @querynameEND在我的控制器中,我编写了这样的代码:var result = db.Database.SqlQuery<RESULT_FROM_QRY>("_SelectFromQry", new SqlParameter("queryname","INVAVAIL")).ToList(); 当应用程序到达这一行时,我得到一个SqlCilent.SqlExcepction:过程“_SelectFromQry”需要未提供的参数“@queryname”。我不确定我的代码是否正确调用了存储过程?
2 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
可能您需要在查询字符串中包含可能的参数名称,如下所示:
var result = db.Database.SqlQuery<RESULT_FROM_QRY>("_SelectFromQry @queryname", new SqlParameter("queryname", "INVAVAIL")).ToList();
或者可选地使用EXEC
前缀:
var result = db.Database.SqlQuery<RESULT_FROM_QRY>("EXEC _SelectFromQry @queryname", new SqlParameter("queryname", "INVAVAIL")).ToList();
由于您的存储过程声明了一个输入参数而不指定默认值NULL
(即使用必需参数而不是可选参数),因此必须提供参数名称才能执行它。
慕哥6287543
TA贡献1831条经验 获得超10个赞
大概问题是您在 SqlParameter 构造函数中使用“queryname”而不是“@queryname”,即:
new SqlParameter("queryname","INVAVAIL")
应该是这样的:
new SqlParameter("@queryname","INVAVAIL")
- 2 回答
- 0 关注
- 193 浏览
添加回答
举报
0/150
提交
取消