/****** Object: StoredProcedure [dbo].[PRO_PageForIdTable] Script Date: 04/29/2014 11:23:21 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Goosoz@163.com -- Create date: 2013-04-03 -- Description: -- ============================================= CREATE proc [dbo].[PRO_PageForIdTable] ( @TableName NVARCHAR(50), --要查询的表名称,单表名称 @FieldsName NVARCHAR(1024), --要返回的列名称 :* @IdName NVARCHAR(50), --标识列名称 能够唯一标识数据:ID @StrWhere NVARCHAR(max), --要求带WHERE关键字:where addtime>'2012' @OrderASC bit, --是否升序,0:DESC,1:ASC 要求和 @Page INT, --页码从1开始 @PageSize INT, -- @TotalRow INT output -- 记录总数 ) as BEGIN SET NOCOUNT ON; DECLARE @sqlOrder AS NVARCHAR(512); DECLARE @sql AS NVARCHAR(MAX); if(@OrderASC=0) set @sqlOrder='order by '+@IdName+' desc'; else set @sqlOrder='order by '+@IdName+' asc'; begin if(@Page<2) --select top 20 id from tb_errorlog where id>33333 and id<444444 order by id desc set @sql=' select top '+ CONVERT(NVARCHAR(20),@PageSize) +' '+@FieldsName+' from '+@TableName+' '+@StrWhere+' '+@sqlOrder; else if(@OrderASC=0) begin if(@StrWhere='') -- select top 20 id from tb_errorlog -- where id<(select min(id) from (select top 30000 id from tb_errorlog order by id desc) as cnic_t_2012_001) -- order by id desc set @sql='select top '+ CONVERT(NVARCHAR(20),@PageSize) +' '+@FieldsName+' from '+@TableName +' where '+@IdName+'<(select min('+@IdName+') from (select top '+CONVERT(NVARCHAR(20),@PageSize*(@Page-1))+' '+@IdName+' from '+@TableName+' '+@sqlOrder+') as cnic_t_2012_001) ' +@sqlOrder else -- select top 20 id from tb_errorlog where id>33333 and id<444444 -- and id<(select min(id) from (select top 30000 id from tb_errorlog where id>33333 and id<444444 order by id desc) as cnic_t_2012_001) -- order by id desc set @sql='select top '+ CONVERT(NVARCHAR(20),@PageSize) +' '+@FieldsName+' from '+@TableName+' '+ @StrWhere +' and '+@IdName+'<(select min('+@IdName+') from (select top '+CONVERT(NVARCHAR(20),@PageSize*(@Page-1))+' '+@IdName+' from '+@TableName+' '+ @StrWhere+' '+@sqlOrder+') as cnic_t_2012_001) ' +@sqlOrder end else begin if(@StrWhere='') -- select top 20 id from tb_errorlog -- where id<(select min(id) from (select top 30000 id from tb_errorlog order by id desc) as cnic_t_2012_001) -- order by id desc set @sql=' select top '+ CONVERT(NVARCHAR(20),@PageSize) +' '+@FieldsName+' from '+@TableName +' where '+@IdName+'>(select max('+@IdName+') from (select top '+CONVERT(NVARCHAR(20),@PageSize*(@Page-1))+' '+@IdName+' from '+@TableName+' '+@sqlOrder+') as cnic_t_2012_001) ' +@sqlOrder else -- select top 20 id from tb_errorlog where id>33333 and id<444444 -- and id<(select min(id) from (select top 30000 id from tb_errorlog where id>33333 and id<444444 order by id desc) as cnic_t_2012_001) -- order by id desc set @sql='select top '+ CONVERT(NVARCHAR(20),@PageSize) +' '+@FieldsName+' from '+@TableName+' '+ @StrWhere +' and '+@IdName+'>(select max('+@IdName+') from (select top '+CONVERT(NVARCHAR(20),@PageSize*(@Page-1))+' '+@IdName+' from '+@TableName+' '+ @StrWhere+' '+@sqlOrder+') as cnic_t_2012_001) ' +@sqlOrder end end --print (@sql); exec (@sql); set @sql='set @RowCount=(select count('+@FieldsName+') from '+@TableName+' '+@StrWhere+')'; exec sp_executesql @sql, N'@RowCount int output', @TotalRow output; END GO
SqlParameter[] Param = new SqlParameter[]{ new SqlParameter("@TableName","tb-xxx"),//0 new SqlParameter("@FieldsName","*"),//1 new SqlParameter("@IdName","ID"),//2 new SqlParameter("@StrWhere",sql.ToString()),//3 带where new SqlParameter("@OrderASC",SortType==1),//4 此参数必须先强制转换为object类型 new SqlParameter("@Page",page),//5 new SqlParameter("@PageSize",pageSize),//6 new SqlParameter("@TotalRow",0)//7 }; Param[7].Direction = ParameterDirection.Output; using (SqlDataReader dr = DbHelperSQL.RunProcedure("PRO_PageForIdTable", Param)) { while (dr.Read()) { rtun.Add(GetModel(dr)); } dr.Close(); } TotalRow = Convert.ToInt32(Param[7].Value); MaxPage = Units.GetPageCount(TotalRow, pageSize); return rtun;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解 .NET 结构体字段的内存布局
· .NET 9中的异常处理性能提升分析:为什么过去慢,未来快
· 字符集、编码的前世今生
· Web性能优化:从 2 秒到200毫秒
· WPF 使用GDI+提取图片主色调并生成Mica材质特效背景
· DeepSeek为什么现在感觉不火了?
· 【故障公告】博客主站遭遇很奇怪的疯狂攻击
· 我与博客园的20年
· 一个老程序员, 两个小时能用corsur做出什么样的东西
· 刚刚,Cursor 1.0炸裂发布!4大亮点实战