氟塑料离心泵www.buybeng.com

jquery教程http://www.software8.co/wzjs/jquery/

一种Java调用Sybase存储过程实现取前N条数据的方法

一.在Sybase中创建存储过程如下:
Sql代码:  
  1. drop procedure getPageWiseData  
  2. go   
  3. create procedure getPageWiseData    
  4. (    
  5. @sqlStr varchar(8000),    
  6. @start int,    
  7. @limit int   
  8. )    
  9. as    
  10. DECLARE @dt varchar(10)    --生成临时表的随机数    
  11. BEGIN      
  12. --# variable to hold the first row number of the page.    
  13. SELECT @dt= substring(convert(varchar, rand()), 3, 10)    --一个字符型的随机数    
  14.    
  15. SELECT @sqlStr = stuff(@sqlStr, 1, 7, 'select rownum=identity(12), ')    
  16. SELECT @sqlStr = stuff(@sqlStr, charindex(' FROM ', upper(@sqlStr)), 6 ,' into tempdb..Lining' + @dt + ' from ')    
  17. execute (@sqlStr)     
  18. --# select the data with the calculated range for first and last row on page.    
  19. select @sqlStr = 'select * from tempdb..Lining' + @dt + ' where rownum >= '+convert(varchar, @start)+' and rownum < '+convert(varchar, (@start+@limit))     
  20. execute (@sqlStr)      
  21. --删除临时表    
  22. SELECT @sqlStr = 'DROP TABLE tempdb..Lining'+@dt   
  23. EXECUTE (@sqlStr)     
  24. END  
二.用jdts驱动调用Sybase数据库
原文参考自站长网:
http://www.software8.co/wzjs/java/3541.html
Java代码:  
  1. public class JdbcSybaseProcedure {  
  2.  public static void main(String[] args) {  
  3.   Connection conn = null;  
  4.   CallableStatement cs = null;  
  5.   try {  
  6.    Class.forName("net.sourceforge.jtds.jdbc.Driver");  
  7.    conn = DriverManager.getConnection("jdbc:jtds:sybase://192.9.190.98:4100/inner_dbs", "emp", "empemp");  
  8.    //下面的意思要调用那个存储过程,存储过程名字是getPageWiseData;  
  9.    cs = conn.prepareCall("{call getPageWiseData(?,?,?)}");  
  10.    cs.setString(1, "select * from lps_mst order by pan");  
  11.    cs.setInt(21);  
  12.    cs.setInt(35);  
  13.    //执行存储过程  
  14.    ResultSet rs = cs.executeQuery();  
  15.    while(rs.next()) {  
  16.     System.out.println(rs.getString("pan"));  
  17.    }  
  18.   } catch (Exception e) {  
  19.    e.printStackTrace();  
  20.   } finally {  
  21.    try {  
  22.     cs.close();  
  23.    } catch (SQLException e) {  
  24.     e.printStackTrace();  
  25.    }finally {  
  26.     cs = null;  
  27.    }  
  28.    try {  
  29.     conn.close();  
  30.    } catch (SQLException e) {  
  31.     e.printStackTrace();  
  32.    }finally {  
  33.     conn = null;  
  34.    }  
  35.   }  
  36.  }  
  37. }  

posted on 2013-03-27 08:43 你爸是李刚 阅读(2001) 评论(1)  编辑  收藏

评论

# re: 一种Java调用Sybase存储过程实现取前N条数据的方法 2013-05-13 17:05 -_-

tempdb..Lining7471702744 not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output).

请问下 报这个错怎么解决  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年3月>
242526272812
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿

随笔档案

文章档案

技术网站

行业网站

搜索

最新评论

阅读排行榜

评论排行榜

站长网 氟塑料离心泵 注塑机 液晶广告机