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

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。