加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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 --//--

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读