【问题标题】:ASP.NET MVC calling stored procedure with error parameter not supplied未提供错误参数的 ASP.NET MVC 调用存储过程
【发布时间】:2018-05-22 02:05:02
【问题描述】:

我目前有一个尝试执行存储过程的 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”。

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

【问题讨论】:

    标签: c# asp.net stored-procedures


    【解决方案1】:

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

    new SqlParameter("queryname","INVAVAIL")
    

    应该是这样的:

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

    【讨论】:

    • 我按照你的方式进行了相应的修改,仍然得到同样的异常... ...
    • 在这种情况下,我只能假设您的 SqlQuery 方法内部存在问题,但您没有向我们展示该代码,所以我只能猜测。
    【解决方案2】:

    您可能需要在查询字符串中包含可能的参数名称,如下所示:

    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(即使用必需参数而不是可选参数),因此必须提供参数名称才能执行它。

    参考:

    SQL Server stored procedure parameters

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多