使用int从MVC4中的存储过程返回的结果 [英] consume int result returned from stored procedure in MVC4

查看:63
本文介绍了使用int从MVC4中的存储过程返回的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了这样的存储过程:

I have created stored procedure like this:

ALTER procedure [dbo].[takeOrder]
(
    @id int = 0,
    @userid int = 0,
    @diningid int,
    @amount float
)
as
begin
    declare @countt as int

    select @countt = COUNT(*) 
    from Order_master 
    where dining_Id = @diningid and isActive = 1

    if @countt <> 0
    begin
        update Order_master 
        set amount = @amount 
        where dining_Id = @diningid and isActive = 1;
    end
    else
    begin
        insert into Order_master(userid, dining_Id, amount, [date], isActive)
        values (@userid, @diningid, @amount, GETDATE(), 1)
    end

    --select amount from Order_master where dining_Id=@diningid and isActive=1
    select oid 
    from Order_master 
    where dining_Id = @diningid and isActive = 1
end

在控制器中,我试图获取返回结果,如下所述:

In controller I am trying to get return result as mention below:

[HttpPost]
public ActionResult takeOrder(Order_master order,List<Menu_info> menu)
{
            String msg = "";
            int oid;

            if (ModelState.IsValid)
            {
                try
                {
                    Order_master objOreder = new Order_master
                    {
                        amount = order.amount,
                        isActive = 1,
                        date = order.date,
                        dining_Id = order.dining_Id,
                        userId = order.userId
                    };
                   object orderId = db.takeOrder(objOreder.oid, objOreder.userId, objOreder.dining_Id, objOreder.amount);                                     
                   oid = (int)orderId;
                   msg = "success..!!";
                }
                catch (Exception ex)
                {
                    msg = "error...";
                }
            }
            else
            {
                msg = "please provide info";
            }

            if (Request.IsAjaxRequest())
            {
                return new JsonResult { Data = msg, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
            }
            else
            {
                return View();
            }
}

但它会返回异常


无法将类型'System.Data.Objects.ObjectResult'转换为'int'

Cannot convert type 'System.Data.Objects.ObjectResult' to 'int'

我无法从存储过程中获得单个返回值。

I am not able to get single return value from stored procedure.

希望我能找到正确的解决方案。

Hope I get the right solution.

推荐答案


  1. 创建视图为

  1. Create view as

创建视图[dbo]。[ vScalar]
AS
选择''AS值

CREATE VIEW [dbo].[vScalar] AS SELECT '' AS Value

在存储过程中返回

SELECT CAST(orderId AS VARCHAR(10))AS值

SELECT CAST(orderId AS VARCHAR(10)) AS value

在Entity Framework中,设置函数返回使用实体vScalar

In Entity Framework, set function return use entity vScalar

在代码中

vScalar orderId = db.takeOrder(objOreder.oid,objOreder.userId,objOreder.dining_Id,objOreder.amount ).FirstOrDefault;

vScalar orderId = db.takeOrder(objOreder.oid, objOreder.userId, objOreder.dining_Id, objOreder.amount).FirstOrDefault;

oid =(int)orderId.value;

oid = (int)orderId.value;

这篇关于使用int从MVC4中的存储过程返回的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆