我目前有一个 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条经验 获得超5个赞
可能您需要在查询字符串中包含可能的参数名称,如下所示:
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 关注
- 250 浏览
添加回答
举报
0/150
提交
取消
