2012-10-16 09:50:34,575 [Thread-3] INFO [com.tg.thread.util.LoggerUtil] - java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
ORA-01000: 超出打开游标的最大数
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oopen.receive(Oopen.java:120)
at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java:586)
at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:385)
at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:413)
at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:119)
at oracle.jdbc.driver.OracleCallableStatement.<init>(OracleCallableStatement.java:77)
at oracle.jdbc.driver.OracleCallableStatement.<init>(OracleCallableStatement.java:48)
at oracle.jdbc.driver.OracleConnection.privatePrepareCall(OracleConnection.java:1134)
at oracle.jdbc.driver.OracleConnection.prepareCall(OracleConnection.java:988)
at sun.reflect.GeneratedMethodAccessor108.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at org.hibernate.jdbc.BorrowedConnectionProxy.invoke(BorrowedConnectionProxy.java:74)
at $Proxy1.prepareCall(Unknown Source)
at com.tg.thread.busi.period.dao.CmPeriodInfoDaoImpl.execProce_strpPeriod(CmPeriodInfoDaoImpl.java:40)
at com.tg.thread.busi.period.service.PeriodService.proess_StopPeriod(PeriodService.java:37)
at com.tg.thread.test.TestThread.run(TestThread.java:62)
2012-10-16 09:50:34,575 [Thread-3] INFO [com.tg.thread.util.LoggerUtil] - PeriodService--> 期次过期过程 执行失败 数据库异常,过程返回null
2012-10-16 09:50:34,575 [Thread-3] INFO [com.tg.thread.util.LoggerUtil] - 正在执行的查询hql: from CmPeriodInfoBean t where (t.istate=2 or t.istate=3) and rownum<15 order by t.id desc
2012-10-16 09:50:34,576 [Thread-3] INFO [com.tg.thread.util.LoggerUtil] - org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2235)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
at org.hibernate.loader.Loader.list(Loader.java:2124)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at com.tg.thread.base.BaseDaoImpl.findObjects(BaseDaoImpl.java:92)
at com.tg.thread.busi.period.service.PeriodService.getNoAwardsPeriods(PeriodService.java:204)
at com.tg.thread.test.TestThread.run(TestThread.java:64)
Caused by: java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
ORA-01000: 超出打开游标的最大数
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oopen.receive(Oopen.java:120)
at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java:586)
at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:385)
at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:413)
at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:119)
at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:92)
at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleConnection.java:950)
at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:802)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1577)
at org.hibernate.loader.Loader.doQuery(Loader.java:696)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2232)
... 10 more
--下面是存储过程的代码
create or replace procedure pro_stopPeriod--期次过期截至
(
po_ErrCode Out Int, --错误代码
po_ErrDesc Out varchar2, --错误描述
po_orderAccoutSum Out Int --重置订单总数
)
is
v_count int;
v_period VARCHAR2(20);
v_lotterycode VARCHAR2(20);
cursor emp_cursor is
select t.cperiodid,t.clotterycode from cm_period_info t
where t.cendtime <to_char(sysdate,'yyyy-MM-dd HH:mm:ss') and (t.ISTATE=0 or t.ISTATE=1);
begin
po_ErrCode :=9999;
po_ErrDesc :='未知异常';
po_orderAccoutSum:=0;
OPEN emp_cursor;
IF emp_cursor%ISOPEN THEN
LOOP
FETCH emp_cursor INTO v_period,v_lotterycode;
EXIT WHEN emp_cursor%NOTFOUND;
--处理代购0表示未处理; 1-收单成功 2-收单失败
select count(*) into v_count from cm_orderinfo t where t.cperiodid=v_period and t.clotterycode=v_lotterycode
and (t.tradestate=1 or t.tradestate=2 );
if v_count>0 then
update cm_orderinfo t1 set t1.TRADESTATE=11 where t1.cperiodid=v_period and t1.clotterycode=v_lotterycode;
po_orderAccoutSum:=po_orderAccoutSum+v_count;
----缺少退款流程--单独线程处理
end if;
--处理合买
select count(*) into v_count from cm_hm_info t where t.ILEAVINGNUM>0
and t.ICPERIODS=v_period and t.CLOTTERYCODE=v_lotterycode and (t.ISTATE=0 or t.ISTATE=1);
if v_count>0 then
update cm_hm_info t set t.istate=5 where ( t.ILEAVINGNUM>0 or t.istate=0 or t.istate=1 ) and t.ICPERIODS=v_period and t.CLOTTERYCODE=v_lotterycode;
po_orderAccoutSum:=po_orderAccoutSum+v_count;
---缺少退款流程--单独线程处理
end if;
end loop;
CLOSE emp_cursor;
update cm_period_info t set t.istate=2 where t.cendtime <to_char(sysdate,'yyyy-MM-dd HH:mm:ss');
po_ErrCode :=0;
po_ErrDesc :='期次停止并将相关订单修改为[出票失败]完成';
commit;
else
po_ErrCode :=2001;
po_ErrDesc :='游标未打开';
commit;
end if;
/*
LOOP
FETCH emp_cursor INTO v_ename;
EXIT WHEN emp_cursor%NOTFOUND;
update cm_orderinfo t1 set t1.TRADESTATE=5 where t1.cperiodid=emp_cursor%cperiodid
and t1.clotterycode=emp_cursor%clotterycode;
po_orderAccoutSum:=emp_cursor%ROWCOUNT;
END LOOP;
end if;
FOR Emp_record IN emp_cursor LOOP
DBMS_OUTPUT.PUT_LINE(Emp_record.cperiodid|| Emp_record.clotterycode);
END LOOP;
*/
Exception
When Others Then
po_ErrCode :=9999;
po_ErrDesc := '未知异常' ;
IF emp_cursor%ISOPEN THEN
CLOSE emp_cursor;
END IF;
rollback;
end pro_stopPeriod;
分享到:
相关推荐
一个能在单独的线程中执行Node.js函数的零依赖库
Qt中把QTimer放进子线程中执行,同时,把主ui线程中的定时器槽函数,同步移动到子线程执行。本样例,实现了,QTimer在子线程运行,QTimer的槽函数与自己均在同一个子线程中运行。
主要介绍了Java中一个线程执行死循环有什么后果,当一个线程在执行死循环时会影响另外一个线程吗,下面为大家揭晓
实现三个线程同时执行,且可以单独关闭和运行,通过进度条实现可视化演示。
C#线程 在某一时间内,只有N个线程在并发执行,其余都在队列中的实现
多线程有很好的并发性即无序性,在某些特殊情况下需要用到多线程然而又要使其具备顺序性,这种时候就有了一个特殊的场景那就是多线程顺序执行,在现在VS2015中Task自带了顺序执行的方法,但在此之前的旧项目中如果...
Windows环境中Kill掉Oracle线程
如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值.超过最大值的线程可以排队,但他们要等到其他线程完成后才启动
ALSA 多线程处理报underrun 寻求解决方案中
Oracle SQL Handler,是专为 Oracle 数据库开发人员及操作人员精心打造的一款 Oracle 客户端工具: 超智能的SQL编辑器;超方便的表格操作(可以通过修改表格的单元格数据去更新数据 库表);多种格式的数据导出包括...
Java操作Oracle数据库-多线程,演示了使用多线程技术从oracle 数据库中读取函数、存储过程等功能。,具体实现方法请详见源代码。
此前被面试问道一道面试题,B,C线程都有自己的任务,A线程要在B,C线程都结束后开始执行,并且不允许有A线程循环等待空耗CPU现象。
oracle用线程录入数据
C#,编写的多线程执行处理程序,同时执行多个任务,共大家参考。
主要介绍了Winform基于多线程实现每隔1分钟执行一段代码的方法,设计线程的操作及时间函数的用法,需要的朋友可以参考下
多线程计数实现多线程执行后再执行主线程,在项目中实际应用。
.版本 2 .支持库 EThread 进入许可区 (许可证句柄) 帖子标题 = 文本_取随机汉字 (4) 用户名 = 处理cookie () 退出许可区 (许可证句柄) 编辑框1....线程数 = 线程数 + 1 InterlockedDecrement (任务量)
多线程并行执行,汇总结果、多线程并行执行,汇总结果
声明BigJob 对 像(包括事件),创建BigJob 的实 例,通知对像执行任务,在对像的“ 开 始”事件中给用户一些提示,数字时钟”在不间断地显示当前时间。 不足之处:终止任务(关闭窗体)时 Activex.exe 部件需要...
2. 然后在线程池execute方法中,每个线程都执行一次ready.countDown()方法修改计数值 3. 在线程池中每个线程执行ready.countD