请问那位有存储过程分页码的代码,给小弟一个 现在发现很多人都使用存储过程直接查询出当页要显示的记录给存储过程传入 要显示的页码,每页要显示的记录,排序条件等等并不依赖于表的标识列 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://panda.h70.1stxy.net/ViewArticle.aspx?articleId=111 ------------------作用:分页存储过程--作者:--日期:-----------------ALTER PROCEDURE GetRecordByPage @tblName varchar(255), -- 表名 @fldName varchar(255), -- 主键字段名 @PageSize int = 10, -- 页尺寸 @PageIndex int = 1, -- 页码 @IsReCount bit = 1, -- 返回记录总数, 1 值则返回 @OrderType bit = 0, -- 设置排序类型, 1 值则降序 @strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)ASdeclare @strSQL varchar(6000) -- 主语句declare @strTmp varchar(1000) -- 临时变量declare @strOrder varchar(400) -- 排序类型if @OrderType != 0begin set @strTmp = '<(select min' set @strOrder = ' order by [' + @fldName +'] desc'endelsebegin set @strTmp = '>(select max' set @strOrder = ' order by [' + @fldName +'] asc'endset @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)' + @strOrderif @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrderif @PageIndex = 1begin set @strTmp ='' if @strWhere != '' set @strTmp = ' where ' + @strWhere set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + ']' + @strTmp + ' ' + @strOrderendexec (@strSQL)--返回记录if @IsReCount != 0 if @strWhere != '' set @strSQL = 'select count(*) as Total from [' + @tblName + ']'+' where ' + @strWhere else set @strSQL = 'select count(*) as Total from [' + @tblName + ']'exec (@strSQL)--返回记录总数 RETURN SQL Server中的时间读取到.Net中丢失精度的问题,如何解决? sqlhelper+AspNetPager分页遇到的问题 visual studio 2008升级成SP1后出现asp调试问题 公司要买域名foread.com和forread.com哪个好?(版主手下留情,过两天再移) GridView 问题 存储过程分页问题,大家进来看看啊! 请问离开当前页面session值自动设置为null怎么写? 求高手帮忙 aspx与ascx 非空验证 一个IE Javascript引擎的问题 关于版本控制,大家来看看,帮帮菜鸟! 使用AjaxPanel后撑开页面的问题
--作用:分页存储过程
--作者:
--日期:
-----------------
ALTER PROCEDURE GetRecordByPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 主键字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@IsReCount bit = 1, -- 返回记录总数, 1 值则返回
@OrderType bit = 0, -- 设置排序类型, 1 值则降序
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)
ASdeclare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(1000) -- 临时变量
declare @strOrder varchar(400) -- 排序类型if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by [' + @fldName +'] desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by [' + @fldName +'] asc'
endset @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
+ @strOrderif @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrderif @PageIndex = 1
begin
set @strTmp =''
if @strWhere != ''
set @strTmp = ' where ' + @strWhere set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + ']' + @strTmp + ' ' + @strOrder
end
exec (@strSQL)--返回记录if @IsReCount != 0
if @strWhere != ''
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'+' where ' + @strWhere
else
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'exec (@strSQL)--返回记录总数
RETURN