利用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]
drop procedure [dbo].[p_splitpage]
![]() GO
GO
![]()
![]() --利用SQL未公开的存储过程实现分页
--利用SQL未公开的存储过程实现分页
![]() create procedure p_splitpage
create procedure p_splitpage   
![]() @sql nvarchar(4000),    --要执行的sql语句
@sql nvarchar(4000),    --要执行的sql语句
![]() @currentpage int=2,     --要显示的页码
@currentpage int=2,     --要显示的页码
![]() @pagesize int=10,        --每页的大小
@pagesize int=10,        --每页的大小
![]() @pagecount int=0 out    --总页数
@pagecount int=0 out    --总页数
![]() as
as
![]() set nocount on
set nocount on
![]() declare @p1 int
declare @p1 int
![]()
![]() exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output
exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output
![]()
![]() select @pagecount=ceiling(1.0*@pagecount/@pagesize)
select @pagecount=ceiling(1.0*@pagecount/@pagesize)
![]() ,@currentpage=(@currentpage-1)*@pagesize+1
    ,@currentpage=(@currentpage-1)*@pagesize+1
![]() select @currentpage
select @currentpage
![]() exec sp_cursorfetch @p1,16,@currentpage,@pagesize
exec sp_cursorfetch @p1,16,@currentpage,@pagesize 
![]() exec sp_cursorclose @p1
exec sp_cursorclose @p1
![]() go
go
![]()
![]() --调用示例
--调用示例
![]() exec p_splitpage 'select id,name from sysobjects',2
exec p_splitpage 'select id,name from sysobjects',2
 drop procedure [dbo].[p_splitpage]
drop procedure [dbo].[p_splitpage] GO
GO
 --利用SQL未公开的存储过程实现分页
--利用SQL未公开的存储过程实现分页 create procedure p_splitpage
create procedure p_splitpage    @sql nvarchar(4000),    --要执行的sql语句
@sql nvarchar(4000),    --要执行的sql语句 @currentpage int=2,     --要显示的页码
@currentpage int=2,     --要显示的页码 @pagesize int=10,        --每页的大小
@pagesize int=10,        --每页的大小 @pagecount int=0 out    --总页数
@pagecount int=0 out    --总页数 as
as set nocount on
set nocount on declare @p1 int
declare @p1 int
 exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output
exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output
 select @pagecount=ceiling(1.0*@pagecount/@pagesize)
select @pagecount=ceiling(1.0*@pagecount/@pagesize) ,@currentpage=(@currentpage-1)*@pagesize+1
    ,@currentpage=(@currentpage-1)*@pagesize+1 select @currentpage
select @currentpage exec sp_cursorfetch @p1,16,@currentpage,@pagesize
exec sp_cursorfetch @p1,16,@currentpage,@pagesize  exec sp_cursorclose @p1
exec sp_cursorclose @p1 go
go
 --调用示例
--调用示例 exec p_splitpage 'select id,name from sysobjects',2
exec p_splitpage 'select id,name from sysobjects',2 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号