-- =============================================
-- Author:
-- Author:
-- Create date: 2008-4-15
-- Description: 适合2005的分页存储过程 解决表内无排序分页唯一值的 分页问题
--
-- ReWriteer: 改进适合多字段排序
-- =============================================
CREATE PROCEDURE [dbo].[IB_SP_Pagination_LWF]
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@OrderByStr varchar(255)='', -- 排序的字符串 例:order by id asc,name desc
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 1, -- 返回记录总数, 非 0 值则返回
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
AS
SET NOCOUNT ON
declare @strSQL varchar(5000) -- 主语句
if @doCount <> 0 -- 如果@doCount传递过来的不是0,就执行总数统计。
begin
if @strWhere <> '' -- 查询条件不为空时添加查询条件过滤数据
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where '+@strWhere
else
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
end
else
begin
if @PageIndex < 1 -- 负数页索引时默认为1
set @PageIndex = 1
if @PageSize < 1 -- 负数页容量时默认为10
set @PageSize = 10
-- 利用row_number函数增加数据的次序标识
set @strSQL = 'select * from (select row_number() over(' + @OrderByStr + ') rank,' + @strGetFields + ' from ' + @tblName + ''
if @strWhere <> '' -- 查询条件不为空时要把原数据先过滤
set @strSQL = @strSQL + ' where ' + @strWhere
-- 必须添加别名;分页用between...and... ;
set @strSQL = @strSQL + ') t where rank between ' + convert(varchar, (@PageIndex - 1) * @PageSize + 1) + ' and ' + convert(varchar, (@PageIndex * @PageSize))
end
exec (@strSQL)
-- Description: 适合2005的分页存储过程 解决表内无排序分页唯一值的 分页问题
--
-- ReWriteer: 改进适合多字段排序
-- =============================================
CREATE PROCEDURE [dbo].[IB_SP_Pagination_LWF]
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@OrderByStr varchar(255)='', -- 排序的字符串 例:order by id asc,name desc
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 1, -- 返回记录总数, 非 0 值则返回
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
AS
SET NOCOUNT ON
declare @strSQL varchar(5000) -- 主语句
if @doCount <> 0 -- 如果@doCount传递过来的不是0,就执行总数统计。
begin
if @strWhere <> '' -- 查询条件不为空时添加查询条件过滤数据
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where '+@strWhere
else
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
end
else
begin
if @PageIndex < 1 -- 负数页索引时默认为1
set @PageIndex = 1
if @PageSize < 1 -- 负数页容量时默认为10
set @PageSize = 10
-- 利用row_number函数增加数据的次序标识
set @strSQL = 'select * from (select row_number() over(' + @OrderByStr + ') rank,' + @strGetFields + ' from ' + @tblName + ''
if @strWhere <> '' -- 查询条件不为空时要把原数据先过滤
set @strSQL = @strSQL + ' where ' + @strWhere
-- 必须添加别名;分页用between...and... ;
set @strSQL = @strSQL + ') t where rank between ' + convert(varchar, (@PageIndex - 1) * @PageSize + 1) + ' and ' + convert(varchar, (@PageIndex * @PageSize))
end
exec (@strSQL)

浙公网安备 33010602011771号