Sql Server2005通用分页存储过程

CREATE PROCEDURE [dbo].[Common_GetPagedList] ( @TableName nvarchar(100), --表名 @ColumnNames nvarchar(1000) = '*', --字段名集合(全部字段为*,其它逗号分隔) @OrderClause nvarchar(1000), --排序从句(不包含order by) @WhereClause nvarchar(1000) =N' 1=1 ',    --条件从句(不包含where) @PageSize int = 0, --每页记录数(0为所有) @PageIndex int = 1,     --页索引(从1开始) @TotalRecord int output     --返回总记录数 ) AS

BEGIN  if (@ColumnNames is null or @ColumnNames='') set @ColumnNames=' * ' if (@WhereClause is null or @WhereClause='') set @WhereClause=' 1=1 ' if (@OrderClause is null or @OrderClause='') set @OrderClause=' Id desc '

--处理开始点和结束点 Declare @StartRecord int; Declare @EndRecord int;  Declare @TotalCountSql nvarchar(1200);  Declare @SqlString nvarchar(4000);

--统计记录 if(@TotalRecord is null OR @TotalRecord>=0) begin SET @TotalCountSql= N'select @TotalRecord = count(*) from ' + @TableName +' where '+@WhereClause;  --select @TotalCountSql EXEC sp_executesql @totalCountSql,N'@TotalRecord int out',@TotalRecord output;--返回总记录数 end

if @PageSize>0 begin     if @PageIndex<1 set @PageIndex=1 set @StartRecord = (@PageIndex-1)*@PageSize + 1     set @EndRecord = @StartRecord + @PageSize - 1  set @SqlString = N'select row_number() over (order by '+ @OrderClause +') as rowId,'+@ColumnNames+' from '+ @TableName+' where '+@WhereClause; set @SqlString ='select * from (' + @SqlString + ') as t where rowId between ' + ltrim(str(@StartRecord)) + ' and ' + ltrim(str(@EndRecord)); end else  begin set @SqlString='select '+@ColumnNames+' from '+ @TableName+' where '+@WhereClause +' order by '+@OrderClause end --select @SqlString Exec(@SqlString) END

最新文章

  1. c语言打印空心菱形
  2. Remodal – 支持 Hash 追踪的响应式模态窗口
  3. 【BZOJ 1038】【ZJOI 2008】瞭望塔
  4. 在opencv3中利用SVM进行图像目标检测和分类
  5. javaScript的函数(Function)对象的声明(@包括函数声明和函数表达式)
  6. 安装&quot;MySQLdb&quot;一波三折.
  7. 在Raspberry配置优化安装LNMP环境总结
  8. iOS性能优化
  9. UVA 1329 - Corporative Network
  10. SqlServer和Oracle中一些常用的sql语句4 局部/全局变量
  11. Leetcode_252_Implement Stack using Queues
  12. hql 函数大全
  13. 关于 ajax
  14. Is It Always a Good Idea to Reach Outside Your Comfort Zone?
  15. 【工具引入】uiautomatorviewer 查找元素后自动生成代码
  16. Ubuntu17安装Jenkins
  17. thinkphp路由
  18. mac 搭建Vue开发环境
  19. sharepoint 2013 office web app 2013 文档在线浏览 IE11 浏览器不兼容解决方法
  20. response.setContentType 与response.setCharacterEncoding

热门文章

  1. Github README.md中添加图片
  2. HDU 3415 Max Sum of Max-K-sub-sequence 单调队列题解
  3. hadoop1.1.0的伪分布搭建步骤
  4. MapReduce中combine、partition、shuffle的作用是什么
  5. 关于DPM(Deformable Part Model)算法中模型可视化的解释
  6. ACdream 1139(Sum-逆元)
  7. zzulioj--1776--和尚特烦恼2——第几个素数(技巧模拟)
  8. 3.c语言结构体成员内存对齐详解
  9. BZOJ 2424 DP OR 费用流
  10. Java类和对象9