复制代码
--创建存储过程
create proc sp_Show
(
    @index int,  --当前页
    @size int,     --每页大小
    @totalcount int out,  --总数据数
    @pagecount int out      --总页数
)
as
begin 
    --计算总数据数
    select @totalcount=COUNT(*) from Goods       --(where name like '%'+ @name +'%')
    --计算总页数
    set @pagecount=CEILING(@totalcount*1.0/@size)

    if(@index<=0)
    set @index=1
    if(@index>=@pagecount)
    set @index=@pagecount

    --分页查询
    select * from 
        (select ROW_NUMBER() over(order by GId) rn,*from Goods) tb1 where    --(where name like '%'+ @name +'%')
        rn between ((@index-1)*@size)+1 and (@index*@size)
end

declare @x int,@y int
exec sp_Show 1,2,@x out,@y out
select @x 总数据数,@y 总页数
复制代码

2.  Entity FrameWork框架:

复制代码
      //分页存储过程显示
        [HttpGet]
        public PageDate GetGoods2(int index, int size)
        {
            //实例化参数
            SqlParameter[] parameters = new SqlParameter[]
            {
                new SqlParameter("@index",index),
                new SqlParameter("@size",size),
                new SqlParameter("@totalcount",SqlDbType.Int), //总数据数
                new SqlParameter("@pagecount",SqlDbType.Int),  //总页数
            };
            //指定输出参数
            parameters[2].Direction = ParameterDirection.Output;
            parameters[3].Direction = ParameterDirection.Output;

            //存储过程查询
            var list = db.Database.SqlQuery<Goods>("exec sp_Show @index,@size,@totalcount out,@pagecount out", parameters).ToList();

            PageDate page = new PageDate();
            page.List = list;
            page.PageCount = int.Parse(parameters[3].Value.ToString());
            return page;
        }
复制代码