繁体   English   中英

如何从多表 output 存储过程中显示 ASP.NET MVC 视图中的多个表

[英]How do I display multiple tables in ASP.NET MVC view from a multi-table output stored procedure

我试图从返回 2 个表的存储过程中在我的 ASP.NET MVC 视图中显示两个表。 当我尝试访问存储过程结果时,我只能检索到第一个结果集,而不能检索第二个结果集。

在存储过程结果中,这两个表都是通过查询数据库中的多个表得到的。 存储过程保存为testsp

CREATE PROCEDURE [testsp] 
AS
BEGIN
    SELECT TOP 20 CONCAT(col1,' : ', col2) AS 'cols'
    FROM table1 
    WHERE CreatedBy IN (SELECT col11 FROM table2 
                        WHERE col12 = 456 AND Curr = 1)
    ORDER BY CreatedAt DESC

    SELECT TOP 20 CONCAT(col1,' : ', col2) AS 'cols'
    FROM table1 
    WHERE CreatedBy = (SELECT col1 FROM table2 WHERE col12 = 123)
    ORDER BY CreatedAt DESC
END

创建存储过程后,我将存储过程包含在 model 中,并尝试使用以下代码在 controller 中访问它:

public class TestController : Controller
{
    public ActionResult Index()
    {
        DBEntities r = new DBEntities();
        var data = r.testsp().ToList();
        ViewBag.tests = data;
        return View();
    }
}

在视图中,我尝试使用以下代码显示它:

<table id="data" class="table table-bordered table-striped table-responsive">
    <tbody>
        @foreach (var item in ViewBag.tests)
        {
            <tr>
                <td>
                    @item
                </td>
            </tr>
        }
    </tbody>
</table>

这显示了第一个表而不是第二个表。

如何从 controller 中的存储过程结果访问两个表并在视图中显示它们?

SP 不能只有两个选择。 SP 将在第一个 select 命令执行后退出。 三种选择:

  1. 使用 Union 组合两个选择。
  2. 定义 REFCUR 并从 SP 返回 cursor
  3. 对于更高级的解决方案,开发 UDT(用户定义类型)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM