自己总结的分页存储过程,不足之处请大家指点出来,我也努力更正
create procedure pagefunction --利用SQL 2005中的Row_number()
(
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@OrderName varchar(255)='', -- 排序的字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1500) = '''' -- 查询条件 (注意: 不要加 where)
)
as
--declare @timediff datetime
declare @strOrder varchar(400) -- 排序类型
declare @strTmp varchar(110) -- 临时变量
declare @strSql varchar(5000) -- 主语句
begin
set nocount on;
--select @timediff=getdate()
if @OrderType!=0
set @strOrder='order by '+@OrderName+' desc'
else
set @strOrder='order by '+@OrderName+' asc'
if @strWhere is null or @strWhere =''
set @strWhere=''
else
set @strWhere=' where '+@strWhere+''
set @strSql='select '+@strGetFields+' from (select '+@strGetFields+'
,Row_number() over('+@strOrder+') as Row_Id from '+@tblName+' '+@strWhere+'
) as TabPage where Row_Id>'+str(@PageSize*(@PageIndex-1))+' and Row_Id<
'+str((@PageSize*@PageIndex)+1)+''
exec(@strSql)
--select datediff(ms,@timediff,getdate()) --耗时
set nocount off;
end
本文作者:Jason.裕哥
本文链接:https://www.cnblogs.com/fuyu-blog/archive/2011/08/05/2128146.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步