sql server 分页存储过程

来源:百度知道 编辑:UC知道 时间:2024/05/17 01:05:36
create procedure phone_page
@page_no int, --用于记录当前的显示的页数
@page_size int , --用于设置每页显示的记录数量 默认值为6
@total_count int output, --用于返回表的总记录数
@page_count int output --用于返回能分得的总页数
as
set nocount on
declare @sql nvarchar(500)
declare @pagecount int
declare @rowcount int
begin
select @rowcount=count(*) from phone
set @total_count=@rowcount
if @total_count%@page_size=0
begin
set @page_count=@total_count/@page_size
end
else
begin
set @page_count=@total_count/@page_size +1
end
create table #change(id int)
if @rowcount>@page_size
begin
set @rowcount=@page_no * @page_size
if @rowcount=@page_size
begin
set @sql=N'select top '+ cast(@page_size as char(20))+' * from phone'
exec sp_executesql @sql
end
else
begin
set @rowcount=(@page_no-1)*

CREATE PROCEDURE pagination
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='', -- 排序的字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(5000) -- 主语句
declare @strTmp varchar(110) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @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
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况
else
begin
if @OrderType != 0
begin