Как выбрать oracle ДЛИННЫЙ тип данных столбца для MVC просмотров? - PullRequest
2 голосов
/ 06 апреля 2020

Я хочу ВЫБРАТЬ данные из oracle таблицы базы данных в MVC представления в Visual Studio, все работает нормально, кроме одного поля, его тип данных LONG, это код, который я использую:

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);
}

enter image description here И это cs html код:

@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>

Поле является результатом отчета, оно не показывает отчет, как просматривать отчет и работать с типом данных столбца LONG с MVC и получить данные для моих просмотров?

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Я нашел решение со стороны 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  ";

Наконец, в представлении Radiology. cs html foreach l oop я использовал этот столбец также SEARCH_LONG (C .ROWID) вместо report_result

@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>

и теперь вывод ok

0 голосов
/ 06 апреля 2020

Попробуйте TO_LOB с длинным столбцом и проверьте, имеет ли MVC тип CLOB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...