尝试编写存储过程并将结果绑定到表的视图中

时间:2019-07-09 04:22:59

标签: asp.net-mvc oracle

我试图以以下方式调用过程,并希望将来自过程的结果绑定到视图侧的表中。

我创建了一个过程GetData,并希望在数据集中返回值a并在不使用模型的情况下在视图侧进行绑定。

CREATE OR REPLACE PROCEDURE Getdata(v_hr_stk_out OUT SYS_REFCURSOR) Is
r_stk  number;
vr_stk number;
BEGIN
select round(sum(a.batch_wt)) into r_stk from dbprod.sm_data a where a.iss_date is null and a.cw_coil_no is not null and a.prod_cd = '37' and a.from_plant != a.hsource;
select round(sum(a.batch_wt)) into vr_stk  from dbprod.psm_data a where a.iss_date is null and a.cw_coil_no is not null and a.prod_cd = 'C9' and a.from_plant != a.hr_source;

OPEN v_hr_stk_out For 
select r_stk, vr_stk from dual

END;

C#代码:

conn.Open();

OracleCommand command = new OracleCommand();
command.Connection = conn;
command.CommandText = "Getdata";
command.CommandType = CommandType.StoredProcedure;

command.Parameters.Add("v_hr_stk_out", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
command.Parameters.Add("v_cr_stk_out", OracleDbType.RefCursor).Direction = ParameterDirection.Output;

OracleDataAdapter adapter = new OracleDataAdapter(command);
DataSet ds = new DataSet();
adapter.Fill(ds);

return View("Home", ds)

查看

<table cellpadding="0" cellspacing="0">
    <tr>
        <th>A</th>
        <th>B/th>
        <th>C</th>        
    </tr>
    @foreach (DataRow row in Model.Tables[0].Rows)
    {
        <tr>
            <td>F</td>
            <td>@row["r_stk"]</td> 
            <td>@row["vr_stk"]</td>                        
        </tr>
    }
</table>

期望:应该从GetData存储过程中返回该值,并将其绑定到视图侧的表中。

实际:卡在存储过程语法中时出错,并且在对视图侧代码进行数据绑定之后是否合适,

enter image description here 我是Oracle和ASP.NET MVC的新手,正在尝试这样做。任何想法将不胜感激

1 个答案:

答案 0 :(得分:0)

问题似乎出在换行符或空格处的Windows CRLF字符上。 Oracle不会将其视为空格,而是将其视为空字符串。为了解决此问题,请将CRLF字符转换为LF字符,Oracle应该很高兴。

您可以使用Notepad ++查找这些字符。或只需使用记事本并删除所有空格和换行符,然后重新创建空格和换行符即可。

分享此活动后的结果。