Goodspeed

导航

利用SQL未公开的存储过程实现分页

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_splitpage]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_splitpage]
GO

--利用SQL未公开的存储过程实现分页
create procedure p_splitpage  
@sql
nvarchar(4000),    --要执行的sql语句
@currentpage int=2,     --要显示的页码
@pagesize int=10,        --每页的大小
@pagecount int=0 out    --总页数
as
set nocount on
declare @p1 int

exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output

select @pagecount=ceiling(1.0*@pagecount/@pagesize)
    ,@currentpage
=(@currentpage-1)*@pagesize+1
select @currentpage
exec sp_cursorfetch @p1,16,@currentpage,@pagesize
exec sp_cursorclose @p1
go

--调用示例
exec p_splitpage 'select id,name from sysobjects',2

posted on 2004-07-02 14:48  Goodspeed  阅读(1125)  评论(1)    收藏  举报