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

news/2024/5/19 1:38:11 标签: Sybase, 数据库, 存储过程, jdbc, java
一.在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数据库
java">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;
   }
  }
 }
}
 

http://www.niftyadmin.cn/n/1319153.html

相关文章

最小生成树Kruskal算法

Kruskal算法 1.首先将G的n个顶点看成n个孤立的连通分支&#xff0c;将所有的边按权从小到大排序e1,e2,e3...em 2.从第一条边开始&#xff0c;依边权递增的顺序查看每一条边&#xff0c;并按下述方法连接两个不同的两同分支 3.当查看到第K条边ek(v,w)时&#xff0c;若v,w分别在两…

[] + [] = ““

其实是被隐式类型转换 如果操作数为对象和数组&#xff0c;会先转换成字符串&#xff0c;再拼接 String([]) // "" String({}) // "[object Object]" ! [] // !"" true true [] // true "" "true" 所以当boolen类…

MO、MT解读

MO Mobile originate&#xff0c;上行&#xff0c;即用户上发给SP的信息。MT Mobile Terminate&#xff0c;下行&#xff0c;即SP端下发给用户的信息&#xff1b; 上行:mo提交短信到短信中心下行:mt短信中心向特定的用户转发短信&#xff0c;你的短信是这样的&#xff0c;你所提…

DPDK环境配置以及代码编写的有关问题汇总

DPDK环境配置以及代码编写的有关问题汇总 文章目录 DPDK环境配置以及代码编写的有关问题汇总基础概念问题VMware上配置DPDK环境并运行实例程序DPDK网卡配置DPDK基础教程GitHub内容参考 基础概念问题 参考链接一 参考链接二 参考链接三 VMware上配置DPDK环境并运行实例程序 …

观察者模式之:一个游戏设想

版权问题先说明白&#xff0c;我本人的原创想法&#xff0c;本人将自己想法公开和各位分享&#xff0c;无侵权问题&#xff0c;免去各位的后顾之忧。 这是一个被公司束之高阁的建议&#xff0c;公司未曾考虑这个idea的可行之处。不过我还是认真思考了这个的可行之处与不可行之处…

条件语句的优化

1.Array.include() 需要用到大量或语句判断的 function printAnimals(animal){if(anmial dog || anmial cat){console.log(animal)} } // 优化 function printAnimals(animal){let anmials [dog,cat]if(anmials.includes(animal)){console.log(animal)} } 2.提前退出和提…

车辆保险理赔案例

理赔案例&#xff1a; 一货运车&#xff0c;运输公司为车辆购买了机动车商业险和交强险&#xff0c;也买了安全生产责任险&#xff0c;运输一车烟花爆竹&#xff0c;在行驶途中发生爆炸&#xff0c;出现车毁、货损、司机亡、炸死一路人、炸毁一间民宅等惨剧&#xff0c;针对这几…

Map 和 WeakMap 的理解

1.es5的对象key只能是字符串和Symbol&#xff0c;如果是对象的话会toString() const obj1 {name: lin} const obj2 {name: zhen} //变量作为key要加上[] const obj3 {[obj1]: 11,[obj2]: 22, } console.log(obj3) // { [object Object]: 22 } let obj {} let id Symbol(…