Sybase数据库的分页功能

项目中需要用到Sybase数据库的分页功能,想尽各种办法都没有成功,最后用如下的存储过程成功实现功能,记录备忘。

 
CREATE PROCEDURE jsp_query_page @sql varchar(2000),@start int, @pageSize int as 
 begin 
     declare @ipage int
     declare @rcount int 
     declare @execsql varchar(2000)
     declare @sql1 varchar(2000) 
     declare @t int,@p int,@n int,@l int
     begin
         set @sql1=@sql
         set @n=0
         set @l=0
         set @t=charindex('select ',lower(@sql))
         set @sql=substring(@sql,@t+7,char_length(@sql)-7)
         set @n=@n+1
         set @l=@l+7
         while(@n!=0)
         begin
             set @t=charindex('select ',lower(@sql))
             set @p=charindex('from ',lower(@sql))
             if ((@t<@p) and (@t!=0))
                 begin
                     set @sql=substring(@sql,@t+7,char_length(@sql)-7)
                     set @n=@n+1
                     set @l=@l+6+@t
                 end
             else
                 begin
                     set @sql=substring(@sql,@p+5,char_length(@sql)-5)
                     set @n=@n-1
                     set @l=@l+4+@p
                 end
         end
         set @execsql = substring(@sql1,1,@l-5)+' ,sybid=identity(12) into #temp '+substring(@sql1,@l-4,char_length(@sql1)-@l+5)
         select @rcount=@start + @pageSize
         set rowcount @rcount 
         set @execsql = @execsql || ' select * from #temp where sybid>' || convert(varchar,@start) || ' and sybid <= ' || convert(varchar,@rcount) 
         print @execsql
         execute (@execsql) 
         set rowcount 0 
     end
 end
原文地址:https://www.cnblogs.com/libaoting/p/4084663.html