Asp.net mvc 如何在MVC视图中选择oracle长列数据类型?

Asp.net mvc 如何在MVC视图中选择oracle长列数据类型?,asp.net-mvc,oracle,Asp.net Mvc,Oracle,我想在visual studio中选择从oracle数据库表到MVC视图的数据,除了一个字段的数据类型很长之外,其他一切都可以正常工作,这是我使用的代码: public ActionResult Radiology() { string sql = @"SELECT a.rad_order_no , serv_request_date , approving_date ,

我想在visual studio中选择从oracle数据库表到MVC视图的数据,除了一个字段的数据类型很长之外,其他一切都可以正常工作,这是我使用的代码:

public ActionResult Radiology()

{
    string sql = @"SELECT a.rad_order_no , 
                          serv_request_date , 
                          approving_date ,
                          d.LONG_FORIEGN_DESC , 
                          report_result 
                  FROM RAD_ORDER_HEADER a , RAD_IMAGE_HEADER b ,RAD_REPORT_RESULT  c,HOSPITAL_SERVICES d 
                  WHERE a.HOSPITAL_NO = b.HOSPITAL_NO
                  AND a.HOSPITAL_NO = c.HOSPITAL_NO
                  AND b.HOSPITAL_NO = c.HOSPITAL_NO
                  AND A.HOSPITAL_NO=d.HOSPITAL_NO
                  AND b.HOSPITAL_NO=d.HOSPITAL_NO
                  AND d.DEPT_NO=6
                  AND c.SERV_NO=d.SERV_NO
                  AND a.RAD_ORDER_NO = b.RAD_ORDER_NO
                  AND b.IMAGE_NO = c.IMAGE_NO
                  AND b.SERV_NO = c.SERV_NO  ";

    string condition = "";
    condition += " AND a.PATIENT_NO = '" + Session["MRN"] + "'";


    DataTable dt = func.fireDatatable(string.Format(sql+condition));
    return View(dt);
}
这是cshtml代码:

@model System.Data.DataTable
@{
    ViewBag.Title = "Radiology";
    Layout = "~/Views/Shared/_LayoutPatients.cshtml";
}

<h2>Radiology</h2>


<h3>Welcome : @Session["IDNO"].ToString()   :مرحبا </h3>
@*<a href="@Url.Action("Logout","Login")"> Logout </a>*@

<table class="table">
    <tr>
        <th> Order No/رقم الطلب </th>
        <th> Date Of Request/تاريخ الطلب  </th>
        <th> Report Date/تاريخ النتيجة    </th>
        <th> Service/اسم الخدمة</th>
        <th> Report Result/تقرير النتيجة </th>



    </tr>

    @foreach (System.Data.DataRow dr in Model.Rows)
    {

    <tr>
        <td>@dr["rad_order_no"].ToString()</td>
        <td>@dr["serv_request_date"].ToString()</td>
        <td>@dr["approving_date"].ToString()</td>
        <td>@dr["LONG_FORIEGN_DESC"].ToString()</td>
        <td>@dr["report_result"].ToString()</td>

    </tr>

    }

</table>
@model System.Data.DataTable
@{
ViewBag.Title=“放射学”;
Layout=“~/Views/Shared/\u LayoutPatients.cshtml”;
}
放射科
欢迎:@Session[“IDNO”].ToString():م
@**@
订单号/订单号
请求日期
报告日期
服务
报告结果
@foreach(Model.Rows中的System.Data.DataRow dr)
{
@dr[“rad_order_no”].ToString()
@dr[“服务请求日期”].ToString()
@dr[“批准日期”]。ToString()
@dr[“LONG_Foreign_DESC”]。ToString()
@dr[“报告结果”].ToString()
}

字段是报告结果,它不显示报告,如何使用MVC查看报告和处理长列数据类型,并将数据获取到我的视图

尝试使用长列并检查MVC是否具有CLOB类型

我从oracle端SQL端找到了解决方案: LONG数据类型最多可以保存32000个字符,varchar2最多可以保存4000个字符,ASP.NET MVC可以查看VARCHAR数据类型列,因此解决方案是使用以下函数将LONG数据类型转换为VARCHAR:

CREATE OR REPLACE FUNCTION search_long(r ROWID) RETURN VARCHAR2 IS
temporary_varchar VARCHAR2(4000);
BEGIN
SELECT REPORT_RESULT INTO temporary_varchar FROM RAD_REPORT_RESULT WHERE ROWID=r;
RETURN temporary_varchar;
END;
/
然后我调用了SQL SELECT中的函数:

string sql = @"SELECT a.rad_order_no , 
                                  serv_request_date , 
                                  approving_date ,
                                  d.LONG_FORIEGN_DESC , 
                                  SEARCH_LONG(C.ROWID) 
                          FROM RAD_ORDER_HEADER a , RAD_IMAGE_HEADER b ,RAD_REPORT_RESULT  c,HOSPITAL_SERVICES d 
                          WHERE a.HOSPITAL_NO = b.HOSPITAL_NO
                          AND a.HOSPITAL_NO = c.HOSPITAL_NO
                          AND b.HOSPITAL_NO = c.HOSPITAL_NO
                          AND A.HOSPITAL_NO=d.HOSPITAL_NO
                          AND b.HOSPITAL_NO=d.HOSPITAL_NO
                          AND d.DEPT_NO=6
                          AND c.SERV_NO=d.SERV_NO
                          AND a.RAD_ORDER_NO = b.RAD_ORDER_NO
                          AND b.IMAGE_NO = c.IMAGE_NO
                          AND b.SERV_NO = c.SERV_NO  ";
最后,在view Radiology.cshtml foreach循环中,我使用了该列也搜索长(C.ROWID),而不是报告结果

@foreach (System.Data.DataRow dr in Model.Rows)
    {

    <tr>
        <td>@dr["rad_order_no"].ToString()</td>
        <td>@dr["serv_request_date"].ToString()</td>
        <td>@dr["approving_date"].ToString()</td>
        <td>@dr["LONG_FORIEGN_DESC"].ToString()</td>
        <td>@dr["SEARCH_LONG(C.ROWID)"].ToString()</td>

    </tr>
@foreach(Model.Rows中的System.Data.DataRow dr)
{
@dr[“rad_order_no”].ToString()
@dr[“服务请求日期”].ToString()
@dr[“批准日期”]。ToString()
@dr[“LONG_Foreign_DESC”]。ToString()
@dr[“SEARCH_LONG(C.ROWID)”].ToString()
现在输出正常了