项目中需要用到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