zoukankan      html  css  js  c++  java
  • Dapper使用Oracle游标

    添加类:

    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;
        }
    }
  • 相关阅读:
    Shell基本语法
    CURL简单使用
    <C> 字符串简单习题
    <C> 字符串相关的函数
    <C> 内存分区
    <C> 最大值以及最大值下标 二分查找(折半查找)
    <C> 函数 函数指针
    <C> 冒泡排序及其非常非常非常简单的优化
    <C> typedef 宏 const 位运算
    <C> 数组
  • 原文地址:https://www.cnblogs.com/seasblog/p/11393414.html
Copyright © 2011-2022 走看看