当前位置:首页 > 开发 > 数据库 > 正文

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

发表于: 2013-03-25   作者:bijian1013   来源:转载   浏览次数:
摘要: 一.在Sybase中创建存储过程如下: drop procedure getPageWiseData go create procedure getPageWiseData ( @sqlStr varchar(8000), @start int, @limit int ) as DECLARE @dt varchar(10) --生成临
一.在Sybase中创建存储过程如下:
drop procedure getPageWiseData
go
 
create procedure 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 ')  
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'+@dt 
EXECUTE (@sqlStr)   
END
  
二.用jdts驱动调用Sybase数据库
public class JdbcSybaseProcedure {
 public static void main(String[] args) {
  Connection conn = null;
  CallableStatement cs = null;
  try {
   Class.forName("net.sourceforge.jtds.jdbc.Driver");
   conn = DriverManager.getConnection("jdbc:jtds:sybase://192.9.190.98:4100/inner_dbs", "emp", "empemp");
   //下面的意思要调用那个存储过程,存储过程名字是getPageWiseData;
   cs = conn.prepareCall("{call getPageWiseData(?,?,?)}");
   cs.setString(1, "select * from lps_mst order by pan");
   cs.setInt(2, 1);
   cs.setInt(3, 5);
   //执行存储过程
   ResultSet rs = cs.executeQuery();
   while(rs.next()) {
    System.out.println(rs.getString("pan"));
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   try {
    cs.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }finally {
    cs = null;
   }
   try {
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }finally {
    conn = null;
   }
  }
 }
}
 

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

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
下文为您介绍的是使用 SQL语句查询每个分组的前N条记录的实现方法,如果您在此方面曾经遇到过问题,
需求:假设有一个学生各门课的成绩的表单,应用hive取出每科成绩前2名 数据如下表: id clsno score
【声明】:本文中的实验仅限于特定数据库和特定框架。不同数据库,数据库服务器的性能,甚至同一个
原文: 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 从SQLSERVER/MYSQL数据库中随机取一条或者N
从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是
1 存储过程介绍 存储过程是指用于特定操作的pl/sql块,是由流控制和sql语句书写的过程。 存储过程经
----创建的存储过程 create or replace procedure addTest(v1 in number, v2 in number,res out num
行列转换的存储过程 初始图: 效果图: 实现过程: 1:建表、建数据 CREATE TABLE `changeprice` (
在JDBC API中提供了调用存储过程的方法,通过CallableStatement对象进行操作。CallableStatement对
不带参数的存储过程可以直接使用“ 调用DB存储过程”控件,将存储过程名称配置进去即可。 带返回值的
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号