首页 > 移动平台 > 详细

Dapper使用Oracle游标

时间:2019-08-22 12:31:11      阅读:92      评论:0      收藏:0      [点我收藏+]

添加类:

public class RefCursor
{
    public static RefCursor Value = new RefCursor();

    private RefCursor()
    {

     }
}

public class RefCursorHandler : SqlMapper.ITypeHandler
{
    public void SetValue(IDbDataParameter parameter, object value)
    {
        OracleParameter oracleParameter = (OracleParameter)parameter;
        oracleParameter.OracleDbType = OracleDbType.RefCursor;
        oracleParameter.Direction = ParameterDirection.Output;
        parameter.Value = value;
    }

    public object Parse(Type destinationType, object value)
    {
        throw new NotImplementedException();
    }
}

使用之前:

SqlMapper.AddTypeHandler(typeof(RefCursor), new RefCursorHandler());

因为上面的代码只需要执行一次即可,建议在静态构造函数内运行

使用:

public List<SampleListDto> GetSampleListByDapper(IPagedResultRequest paged, ref int total)
{
    var stored = "p_CReportRecognition";
    var parameter = new DynamicParameters();
    parameter.Add("p_pageSize", paged.PageSize);
    parameter.Add("p_pageIndex", paged.PageIndex);
    parameter.Add("p_RowsCount", total, DbType.Int32, ParameterDirection.Output);
    parameter.Add("cur_SysList", RefCursor.Value);//cur_SysList为游标名称

    using (IDbConnection _db = new OracleConnection(_connString))
    {
        var list = _db.Query<SampleListDto>(stored, parameter, null, false, null, CommandType.StoredProcedure).ToList();
        return list;
    }
}

 

Dapper使用Oracle游标

原文:https://www.cnblogs.com/seasblog/p/11393414.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!