Asp.net mvc 如何在MVC视图中选择oracle长列数据类型?
我想在visual studio中选择从oracle数据库表到MVC视图的数据,除了一个字段的数据类型很长之外,其他一切都可以正常工作,这是我使用的代码: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 ,
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()
现在输出正常了