SqlServer2005分页存储过程
发布时间:2020-12-12 15:48:10 所属栏目:MsSql教程 来源:网络整理
导读:Create PROCEDURE PagerExecute ( ??@TblName varchar(255), -- 表名及表集合? ??@Fields varchar(1000) ? ?='*',0);">-- 列名及字段集合 ??@Orders varchar(2000) ? ?= '',0);">-- 排序条件 ??@Wheres varchar(2000) ???= '',0);">-- 查询条件 (不要加 wher
Create PROCEDURE PagerExecute
(
??@TblName varchar(255),
-- 表名及表集合?
??@Fields varchar(1000) ? ?='*',0);">-- 列名及字段集合
??@Orders varchar(2000) ? ?= '',0);">-- 排序条件
??@Wheres varchar(2000)
???= '',0);">-- 查询条件 (不要加 where)
??@PageSize int ? ? ? ? ? ? = 2,? ? ? ?
-
- 页长
??@PageIndex int ? ? ? ? ? ?= 0,? ? ? ?
-- 当前页,@PageIndex从0开始计算,表示第一页
??@doCount int ? ? ? ? ? ? ?= 0
-- 返回记录总数,0分页,1返回总记录数
)
AS declare @strSql varchar(max); declare @MyTable varchar(max); declare @PageNum varchar(10); declare @size varchar(10); Set @MyTable = ''; Set @PageNum = cast((@PageSize*@PageIndex) as varchar(50)); Set @size = cast(@PageSize as varchar(50)); If @Wheres !='' ?Begin? ?? ?set @Wheres = ' where '+@Wheres? ?End --如果 @doCount 大于0,则计算总记录数? IF @doCount > 0 ??? begin ???????set @strSql = 'select count(*) as Total from ' + @TblName + ' ' + @Wheres ??? end? -- 如果@doCount 等于0,则进行分页 ELSE ?? begin Set @MyTable = '(SELECT ROW_NUMBER() OVER('+@Orders+') AS RowId,' + @Fields + ' ' + ' FROM ' + @TblName + ' '? ?+ @Wheres + ')AS Tbl ' set @strSql= 'SELECT TOP '+@size+' * FROM ?' +@MyTable+ ' WHERE RowId > '+ @PageNum ?? end -- 执行存储过程 Exec( @strSql ) -------- The End --//-- (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SQL Server2008 R2 数据库镜像实施手册(双机)SQL Server201
- Windows系统下mysql5.7.21安装详细教程
- SQLServer中汇总功能的使用GROUPING,ROLLUP和CUBE
- SqlServer 2005 将已存在大量数据的表更改为分区表
- SQL插入带有选择和硬编码的值
- sql-server – 如何在SQL Server中确定服务器的MAXDOP设置?
- .net连接sqlserver并测试两个数据库
- .net – 在Sqlserver中CLR集成可能存在哪些问题
- sql – 在varbinary字段上检查ISNULL的策略?
- SQL Server sql cast,convert,QUOTENAME,exec 函数学习记