SQL Server 2005的通用分页存储过程


Create PROCEDURE SP_Page_Exec
(
@TblName varchar(255), -- 表名及表集合
@Fields varchar(1000) ='*', -- 列名及字段集合
@SortKey varchar(255) ='Id', -- 排序的字段名
@OrderType varchar(50) = 'ASC', -- 排序类型
@Orders varchar(2000) = '', -- 排序条件
@Wheres varchar(2000) = '', -- 查询条件 (不要加 where)
@PageSize int = 2, -- 页长
@PageIndex int = 0, -- 当前页,@PageIndex从0开始计算,表示第一页
@doCount bit = 0 -- 返回记录总数, 0分页,1返回总记录数
)

AS

declare @strSql varchar(2000) --- 主语句
declare @MyTable varchar(2000) --- 引用表
declare @PageNum varchar(10)
declare @size varchar(10)

Set @PageNum = cast((@PageSize*@PageIndex) as varchar(50))
Set @size = cast(@PageSize as varchar(50))

If @Wheres !=''
Begin
set @Wheres = ' where '+@Wheres
End


Set @MyTable='(SELECT ROW_NUMBER() OVER(ORDER BY '+@SortKey+' '+@OrderType+') AS RowId ,'+@Fields+' FROM '+@TblName + ' ' + @Wheres+')AS MyTable '
----- @doCount 为1的情况,计算总记录数 -------------
IF @doCount != 0
begin
set @strSql = 'select count('+@SortKey+') as Total from '+@MyTable
end
------ @doCount 为0的情况,进行分页 ------------
ELSE
begin
set @strSql= 'SELECT TOP '+@size+' * FROM ' +@MyTable+ ' WHERE RowId > '+ @PageNum+ ' ' + @Orders

end

---- 执行存储过程---
Exec(@strSql)
常用sql语句大全
常用SQL语句词典
常用SQL语句
常用SQL语句收集
AspNetPager的使用
http://hi.baidu.com/peng_c/blog/item/cba4338d4df38910b21bba4b.html

.net海量数据分页通用存储过程  带例子!!好精华!
posted @ 2008-04-26 10:10 barney 阅读(29) 评论(0)  编辑 收藏 所属分类: 数据库 mssql t—sql

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-05-04 20:16 编辑过


相关链接: