存储过程的学习及java调用
来源:互联网 发布:张艾嘉爱的代价 知乎 编辑:程序博客网 时间:2024/05/22 05:21
1.开发存储过程
例如:功能是利用线程定时调用存储过程将最新数据更新到新表里。
create or replace procedure SAVE_VEHICLE_LATEST_GIS_DATA asbegin merge into ET_VEHICLE_LATEST_GPS_DATA EVLGDusing (SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY EVGD.PLATE_NUMBER ORDER BY EVGD.GIS_TIME DESC) rn, EVGD.PLATE_NUMBER, EVGD.GIS_TIME, EVGD.LONGITUDE, EVGD.LATITUDE, EVGD.GIS_SPEED, EVGD.DIRECTION, EVGD.DRIVER_CODE, EVGD.DRIVER_NAME, EVGD.TASK_CODE FROM ET_VEHICLE_GPS_DATA EVGD WHERE 1 = 1 AND EVGD.PLATE_NUMBER IS NOT NULL AND EVGD.LONGITUDE>=1 AND evgd.task_code is not null) WHERE rn = 1) EVOGDON (EVOGD.PLATE_NUMBER = EVLGD.PLATE_NUMBER)when matched then update set EVLGD.GIS_TIME = EVOGD.GIS_TIME, EVLGD.modify_time = sysDate, EVLGD.rec_ver = EVLGD.rec_ver + 1, EVLGD.LONGITUDE = EVOGD.LONGITUDE, EVLGD.LATITUDE = EVOGD.LATITUDE, EVLGD.GIS_SPEED = EVOGD.GIS_SPEED, EVLGD.DIRECTION = EVOGD.DIRECTION, EVLGD.DRIVER_CODE = EVOGD.DRIVER_CODE, EVLGD.DRIVER_NAME = EVOGD.DRIVER_NAME, EVLGD.TASK_CODE = EVOGD.TASK_CODEwhen not matched then insert (job_id, pm_code, creator, create_time, modifier, modify_time, rec_ver, rec_status, PLATE_NUMBER, GIS_TIME, LONGITUDE, LATITUDE, GIS_SPEED, DIRECTION, DRIVER_CODE, DRIVER_NAME, TASK_CODE) values (SEQ_ET_VEHICLE_LATEST_GPS_DATA.NEXTVAL, sys_guid(), null, sysDate, null, sysDate, 0, 0, EVOGD.PLATE_NUMBER, EVOGD.GIS_TIME, EVOGD.LONGITUDE, EVOGD.LATITUDE, EVOGD.GIS_SPEED, EVOGD.DIRECTION, EVOGD.DRIVER_CODE, EVOGD.DRIVER_NAME, EVOGD.TASK_CODE);end SAVE_VEHICLE_LATEST_GIS_DATA;
2.java代码后台调用
class GetAndSaveVehicleLatestGpsData extends BaseManagerImpl implements Runnable { private static final long serialVersionUID = -761600265448167130L; @Override public void run() { Properties properties = new Properties(); InputStream inputStream = EtElectricFenceSettingManagerImpl.class.getResourceAsStream("/purtms/module.properties"); try { properties.load(inputStream); } catch (IOException e1) { e1.printStackTrace(); } String url = properties.getProperty("jdbc.url"); String user = properties.getProperty("jdbc.username"); String password = properties.getProperty("jdbc.password"); Connection connection = null; CallableStatement callableStatement = null; while (true) { try { Thread.sleep(1000 * 60 * 2);// 睡2分 connection = DriverManager.getConnection(url, user, password); try { synchronized (ONLY_READ_ONE_BY_ONE) { // 获取链接并调用存储过程 callableStatement = connection.prepareCall("{call SAVE_VEHICLE_LATEST_GIS_DATA()}"); callableStatement.execute(); } } catch (Exception e) { Assert.isTrue(false, "保存车辆最新GPS数据失败!"); log.info("[GetAndSaveVehicleLatestGpsData] | FAILED" + e.getMessage()); } finally { // 关闭所有连接 callableStatement.close(); connection.close(); } } catch (Exception e) { Assert.isTrue(false, "保存车辆最新GPS数据失败!"); log.info("[GetAndSaveVehicleLatestGpsData] | FAILED" + e.getMessage()); } } } }
阅读全文
0 0
- 存储过程的学习及java调用
- mysql存储过程学习及java调用存储过程
- mysql存储过程学习及java调用存储过程
- mysql存储过程学习及java调用存储过程
- mysql存储过程学习及java调用存储过程
- mysql存储过程学习及java调用存储过程
- MySQL存储过程及java中存储过程的调用
- 存储过程及java调用
- mysql存储过程学习及java调用存储过程(转载)
- DB2的存储过程及在java里面的调用
- Oracle分页存储过程及java的具体调用方法
- SQL存储过程及Java对它的调用
- Oracle学习-存储过程及调用
- mysql存储过程及java调用存储过程
- JAVA 调用Oracle 及存储过程
- oracle存储过程及Java调用
- MySQL存储过程及Java中存储过程的调用 20111116
- 学习下oracle的存储过程增删改查操作以及java调用存储过程
- 复选框获取值js或jq
- 什么情况下应该建立索引 索引优化及分析
- 委托
- 简答的秒杀倒计时
- ActiveMQ学习笔记
- 存储过程的学习及java调用
- 【ORA-01922】oracle私有dblink无法通过限定owner删除的原因
- CocoaPods 安装 使用
- 插入排序
- Webpack(一)
- Javascript缓存API
- Spring整合JMS(一)——基于ActiveMQ实现
- C语言运算符优先级(超详细)
- 性能优化-SparseArray