例  一个分页:
CREATE OR REPLACE PROCEDURE PagingProc1
(
@page int, --当前页
@size int, --页大小
@pid varchar(100), --主键名称
@tname varchar(100), --表名
@pages int output, -- 总页数
@count int output, -- 总记录数量
@wname varchar(4000)='', --where条件
@oname varchar(4000)='', --排序条件
@columns varchar(4000)='*' --返回列名
)
as
declare @w varchar(100),@ww varchar(100),@o varchar(100)
set @ww =''
set @w=''
set @o='' declare @sql1 varchar(4000),@sql2 nvarchar(4000),@sql3 varchar(4000),@sql4 varchar(4000)
if(@wname<>'')
begin
set @ww=' where '
set @w=' and '
end if(@oname<>'')
set @o=' order by '
set @sql3= @ww + @wname +@o + @oname
set @sql4= @w + @wname +@o + @oname
set @sql2='select @a=count(*) from '+ @tname +@ww + @wname
exec sp_executesql @sql2,N'@a int output',@count output set @pages=ceiling(@count*1.0/@size)
set @page=@page-1 if(@page=0) set @sql1='select top '+str(@size)+' '+@columns+' from '+@tname+@sql3 if(@page>0)-- set @sql1 = 'select top '+str(@size)+' '+@columns+' from '+@tname
--  +' where '+@pid+' < (select min('+@pid+') from '
-- +' (select top '+str(@page*@size) +' '+@pid +' from '+@tname+ @sql3+')a)' + @sql4
    set @sql1 = 'select top '+str(@size)+' '+@columns+' from '+@tname
 +' where '+@pid+' > (select max('+@pid+') from '
 +'(select top '+str(@page*@size) +' '+@pid +' from '+@tname + @sql3+')a)' + @sql4 print @sql1
exec(@sql1)
      END PagingProc1;