- 浏览: 289817 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
gwj879:
结果是因为磁盘满了。。呵呵~~
Encountered 1 errors during the transfer错误解决 -
gwj879:
这么多方法,都不管用啊!1:google 搜索发现,上传的时候 ...
Encountered 1 errors during the transfer错误解决 -
yuanqionlan:
Encountered 1 errors during the transfer错误解决 -
shiyongxin2010:
我服务器上有两个实例,FMPDB,FMPDB1,由于设置mem ...
oracle--ORA 838 Specified value of MEMORY_TARGET is too small, needs to be at le -
fish_bone:
呱唧呱唧
js中获取时间new Date()
解决一个上周很郁闷的问题:
项目中有一个需求,一个表 数据量很大,有几百万条吧,保守估计,呵呵。页面上填入 每组 要显示的个数,租用时间(以秒为单位),逻辑就是我先分组,然后循环 每组里根据填入的个数查询出相应的数据,这些数据要写入到xml里,然后更新。
只用java+sql,就是那种最普通的方式,测试之后发现查询+更新需要18分钟完成100000条记录的操作,这根本不能满足需求。
还是请教一下别人哈,得到的答案是 在Oracle里写存储过程,我测了一下,确实快了不少。呵呵,就用它了。
先看 存储过程怎么写吧!
思路就是先分组,然后根据分组 每组再查询出用户要求的个数,放到一个临时表里,然后更新这些数据,最后查询出临时表里的数据返回一个游标。(注:临时表的创建放在command window 里执行)
create or replace procedure updatePro(returndataCur out IPINFO_PACKAGE.curList,curTime in number,endTime in number,dateTime in number,num in number) is
authId number;
--声明变量
pro VARCHAR2(32);
ipInfoId number;
info_ip number;
maskLen number;
portStart number;
portEnd number;
direct number;
rownumber number;
str varchar2(300);
cnt int;
Cursor groupCur is select auth_id,property from ip_info group by property,auth_id;
Cursor curListCur is select id,ip,mask_len,port_start,port_end,dir,property,auth_id from (select t.*,rownum rn from (select id,ip,mask_len,port_start,port_end,dir,property,auth_id from ip_info ip_info where USABLE_TIME_START + dateTime < = endTime and USABLE_TIME_END + dateTime > = endTime and NEXT_USE_TIME < curTime and property=pro and auth_id=authId order by id desc) t where rownum < = num ) s where rn> 0;
begin
--赋值
authId:=0;
pro:='m';
ipInfoId:=0;
info_ip:=0;
maskLen:=0;
portStart:=0;
portEnd:=0;
direct:=0;
rownumber:=0;
cnt:=0;
str:='delete from RETURNDATA';
select count(*) into cnt from all_tables where table_name='RETURNDATA';
--if cnt!=0 then
--execute immediate str;
--end if;
--此处是游标嵌套
open groupCur;
loop
fetch groupCur into authId,pro;
exit when groupCur%notfound;
--dbms_output.put_line(authId||pro);
open curListCur;
loop
fetch curListCur into ipInfoId,info_ip,maskLen,portStart,portEnd,direct,pro,authId;
exit when curListCur%notfound;
dbms_output.put_line(ipInfoId);
insert into RETURNDATA values(ipInfoId,info_ip,maskLen,portStart,portEnd,direct,pro,authId);
update ip_info set last_use_time=curTime,next_use_time=endTime where id=ipInfoId;
end loop;
commit;
close curListCur;
end loop;
close groupCur;
open returndataCur for select * from RETURNDATA;
end updatePro;
hibernate里调用存储过程
public List findAllIpInfoList(Long curTime,Long tempNum,Long dateTime,Integer number) {
ResultSet rs=null;
Session ses = this.getHibernateTemplate().getSessionFactory().openSession();
List ipInfoList=new ArrayList();
try{
Connection conn = ses.connection();
conn.setAutoCommit(false);
String proc="{Call updatepro(?,?,?,?,?)}";
CallableStatement st = conn.prepareCall(proc);
st.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);//输出参数
st.setInt(2,Integer.valueOf(curTime.toString()));
st.setInt(3,Integer.valueOf(tempNum.toString()));
st.setInt(4,Integer.valueOf(dateTime.toString()));
st.setInt(5,number);
st.execute();
rs = (ResultSet) st.getObject(1);
while(rs.next())
{ IpInfo ipInfo=new IpInfo();
ipInfo.setIpinfoIpString(PublicClass.getJustIp(rs.getString(2)));
ipInfo.setMaskLin(rs.getInt(3));
ipInfo.setPortStart(rs.getInt(4));
ipInfo.setPortEnd(rs.getInt(5));
ipInfo.setDir(rs.getInt(6));
ipInfo.setProperty(rs.getString(7));
ipInfo.setAuthId(rs.getInt(8));
ipInfoList.add(ipInfo);
//System.out.println("<tr><td>" +rs.getLong(2)+"</td><td>"+ rs.getInt(3)+rs.getInt(4)+rs.getInt(5)+rs.getInt(6)+rs.getString(7)+rs.getInt(8)+"</td><td>");
}
conn.commit();
st.close();
conn.close();
ses.close();
}catch(Exception e){
e.printStackTrace();
}
return ipInfoList;
}
发表评论
-
定时任务 每个小时的15 45分的时候执行存储过程
2013-04-11 13:59 974定时任务 每个小时的15 45分的时候执行存储过程 ... -
racle系统包——dbms_job用法(oracle定时任务)
2013-01-25 17:40 788http://www.tieguanyin168.com/?p ... -
oracle日期转化毫秒及毫秒转为日期
2012-08-24 15:31 1707在Java开发中,很多时候我们为了方便会直接使用long型来保 ... -
将一张表中查询的结果插入到另一张表中
2012-08-24 15:30 1067INSERT INTO Scms_sub_company(Na ... -
oracle 任务定时执行
2012-08-24 15:20 911oracle 任务定时执行 在 ... -
oracle里字段用的是date类型 如果java里想得到这里边的值要用to_char转一下
2012-06-04 11:13 926oracle里字段用的是date类型 如果java里想得到这里 ... -
org.hibernate.hql.ast.QuerySyntaxException:expection open")"
2012-04-01 18:48 764相当相当隐蔽的错误 org.hibernate.hql.ast ... -
ORA-22858问题详解
2012-03-09 18:06 12344近日工作中发现有一张表的字段类型建错了,本应是CLOB类型 ... -
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException MYSQL 区分大小写
2011-11-28 13:01 5220java连接 mysql数据库报这个错: com.mysql ... -
hibernate中的各主键
2011-11-26 18:49 687native标识符生成器依据数据库对自动生成标识符的支持能力来 ... -
applicationContext.xml配置hibernate的连接MYDQL数据库
2011-11-26 18:27 2302<?xml version="1.0" ... -
net.sf.json.JSONException: java.lang.NoSuchMethodException: Property 'delegate'
2011-10-31 16:45 9830今天在做修改数据的时候报了一个net.sf.json.JS ... -
222
2011-09-05 17:55 826oracle除法 select MOD(65,50) f ... -
111
2011-09-04 23:01 711http://blog.sina.com.cn/s/blog_ ... -
Oracle ORA-00257: archiver error. Connect internal only, until freed
2011-07-26 16:11 1146Oracle客户端连接报错: Oracle ORA-00257 ... -
Hibernate 关联映射
2011-06-10 15:16 911Hibernate 关联映射 单向 man ... -
oracle trunc() 的认识
2011-05-11 16:40 932TRUNC函数为指定元素而截去的日期值 TRUNC(date ... -
如何将 pl/sql Developer 中查询的结果集导出到 Excel . txt . html . xml csv中?
2011-05-11 16:16 6526选中结果集,点击右键选 copy to excel 就可导出 ... -
Oracle中根据Date型转换成Java对应的long型毫秒数
2011-03-26 18:53 1912在Java开发中,很多时候我们为了方便会直接使用long型来保 ... -
oracle 常用语句
2011-03-26 18:42 13801.当前时间转成秒 s ...
相关推荐
使用hibernate的query调用oracle的存储过程/function,包含例子,源码以及数据库文件
在hibernate中调用oracle中的存储过程的详细代码。可以借鉴使用,帮助学习。
也可以通过存储过程来执行批量更新。存储过程直接在数据库中运行,速度更加快。在Oracle数据库中可以定义一个名为batchUpdateStudent()的存储过程。
6. Hibernate 调用 Oracle 存储过程..................................................................................... 6 用 Java 调用 Oracle 存储过程总结..................................................
文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...
* 5.identity 使用SQL Server和MySQL的自增字段,这个方法不能放到Oracle中,Oracle不支持自增字段,要设定sequence(MySQL和SQL Server中很常用)。等同于JPA中的IDENTITY * 例:@GeneratedValue(generator = ...
199、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 47 200、xml有哪些解析技术?区别是什么? 48 201、你在项目中用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时...
199、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 47 200、xml有哪些解析技术?区别是什么? 48 201、你在项目中用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时...
19、用JDBC如何调用存储过程 69 20、JDBC中的PreparedStatement相比Statement的好处 71 21、写一个用jdbc连接实例。 71 22、ArrayList和Vector的区别? 73 23、List、Set和Map的区别? 74 24、Collection 和 ...
Java 软件工程师面试资料大整合 1 Java 面霸 1 1. int 和 Integer 有什么区别? 8 2. String 和StringBuffer的区别 8 3. 运行时异常与一般异常有何异同? 8 4. 说出ArrayList,Vector,LinkedList的存储性能和特性 8 5...
Hibernate用来作持久层部分和域模型层部分,负责存储、更新、删除、查询数据库记录等,用来作DAO处理,本系统使用Spring整合Hibernate,spring为Hibernate的session提供了有效的容易和安全的控制,Spring控制...
Hibernate用来作持久层部分和域模型层部分,负责存储、更新、删除、查询数据库记录等,用来作DAO处理,本系统使用Spring整合Hibernate,spring为Hibernate的session提供了有效的容易和安全的控制,Spring控制...
1.DriverManager(中的getConnection其实也是调用的Driver.connect方法) getConnection(url);//没有用户名密码 //将用户名密码存放在java.util.Properties对象中 getConnection(url,properties); get...
使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...
@Temporal 控制数据表保存日期哪个部分(日期、时间、日期时间) @OneToMany(mappedBy 相当于 inverse ) @ManyToOne 结合 @JoinColumn 添加一列外键 @ManyToMany 一方写 mappedBy 放弃外键维护、另一方 @...
使用MyEclipse 8.0和Oracle为主要开发工具。前台部分基于Flex技术,应用ActionScript来编写前台代码,主要接受用户的请求并委派...在数据管理方面,采用Hibernate框架,使用Oracle数据库实现对数据的有效存储和查询。
8. 写出Oracle增删改查的存储过程,并在java中调用。 9. 用ajax技术实现一个级联菜单功能。 10.写出插入法进行排序代码。 11.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是...
22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...
22、用JDBC如何调用存储过程 23、JDBC中的PreparedStatement相比Statement的好处 24. 写一个用jdbc连接并访问oracle数据的程序代码 25、Class.forName的作用?为什么要用? 26、大数据量下的分页解决方法。 27、用...
22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...