为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
叮当猫咪 2021-06-26 11:10:29
我目前有一个 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(即使用必需参数而不是可选参数),因此必须提供参数名称才能执行它。


查看完整回答
反对 回复 2021-06-27
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

大概问题是您在 SqlParameter 构造函数中使用“queryname”而不是“@queryname”,即:

new SqlParameter("queryname","INVAVAIL")

应该是这样的:

new SqlParameter("@queryname","INVAVAIL")


查看完整回答
反对 回复 2021-06-27
  • 2 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信