genius0182 发表于 2013-1-30 00:14:54

JAVA调用Sybase分页总结

最近一段时间做的这个项目用的是Sybase,用到了Sybase分页。在网上找了许多,Sybase分页都是用临时表来做的。最后找到了一个存储过程,不过这个存储过程如果直接用有一些问题,所以改了一下。还有就是Sybase存储过程在和java一起用时有几个参数要设置一下。在这都做了说明,下面写把这个存储过程拿出来
create procedure dbo.getPageWiseData   (   @sqlStr varchar(8000),   @start int,   @limit int)   as   DECLARE @dt varchar(10)    BEGIN   --# variable to hold the first row number of the page.   SELECT @dt= substring(convert(varchar, rand()), 3, 10)      SELECT @sqlStr = stuff(@sqlStr, 1, 7, 'select rownum=identity(12), ')   SELECT @sqlStr = stuff(@sqlStr, charindex(' FROM ', upper(@sqlStr)), 6 ,' into tempdb..Lining' + @dt + ' from ')commit   execute (@sqlStr)   --# select the data with the calculated range for first and last row on page.   select @sqlStr = 'select * from tempdb..Lining' + @dt + ' where rownum > '+convert(varchar, @start)+' and rownum <= '+convert(varchar, (@start+@limit))    execute (@sqlStr)   SELECT @sqlStr = 'DROP TABLE tempdb..Lining'+@dtEXECUTE (@sqlStr)    END 然后是设置参数,否则在java中会报错。
sp_procxmode getPageWiseData,'anymode'//对存储过程设置事务模式为anymodeuse masterexec dbo.sp_dboption tempdb, 'ddl in tran', true, null//设置tempdb的ddl in tran参数为trueexec dbo.sp_dboption tempdb, 'allow nulls by default', true, null//设置tempdb的allow nulls by default参数为true 以上就是在java中调用sybase存储过程需要设置的参数。
页: [1]
查看完整版本: JAVA调用Sybase分页总结