首页 > 解决方案 > Oracle 在 C# 中检索错误数据

问题描述

我在 Oracle 数据库中有一个表,我将一个参数从我的 C# 应用程序传递到 Oracle 存储过程以检索u_id基于但是每当我从我的 C# 应用程序传递一个值并将该数据绑定到网格时,它就会显示表中的所有记录,您可以在下面的屏幕截图中检查它:u_idu_idu_id

它在 Oracle 查询中检索正确的数据:

甲骨文查询

但它显示了页面上的所有记录:

页面数据错误

Oracle 存储过程:

create or replace procedure uspGetTrackByUID(u_id in varchar2,
                                         p_out out sys_refcursor) as
begin
    open p_out for
        select *
        from tblEmailTrack t
        where t.flag = 'R'
        and t.u_id = u_id;
end;

C#代码:

private void OGetTrackByUID(string uid)
{
        connection();
        OracleCommand cmd = new OracleCommand("uspGetTrackByUID", ocon);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("u_id", uid.Trim());
        cmd.Parameters.Add("p_out", OracleType.Cursor).Direction = ParameterDirection.Output;

        try
        {
            ocon.Open();
            grdTrack.EmptyDataText = "User haven't read the mail yet";
            grdTrack.DataSource = cmd.ExecuteReader();
            grdTrack.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            ocon.Close();
            ocon.Dispose();
        }
}

可能是什么问题?

标签: c#oracleplsql

解决方案


推荐阅读