0

我一直在尝试从存储过程中获取简单的输出

ALTER PROCEDURE [dbo].[sp_getrandomnumber]
        @randoms int output
AS
begin
  set @randoms =12345
end

和我的 mvc

    public ActionResult Index()
    {
        var qry = db.sp_getrandomnumber(ref randoms); 
      ......
     return View();
    }
}

但是当我编译时,我在该var qry部分出现错误,内容如下

方法“sp_getrandomnumber”没有重载需要 1 个参数

当前上下文中不存在名称“randoms”

我尝试按照本教程 http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

非常感谢

4

1 回答 1

1

你的问题是你的 SPROC 输出是一个 int。

请参阅 Scott Gu 的文章中的以下引用。

“LINQ to SQL 将 SPROC 中的“输出”参数映射为引用参数(ref 关键字),并且对于值类型,将参数声明为可为空。”

所以你需要确保你声明randoms为一个可为空的 int。

将您的 sp 调用更改为

public ActionResult Index()
{   
    // @randoms int output from SPROC.
    int? randoms = null;

    // qry would contain a select if you had one in the SPROC.
    var qry = db.sp_getrandomnumber(ref randoms); 

    // randoms is 12345

    return View();
}

在这里找到另一个例子。

于 2013-04-24T10:52:45.323 回答