账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    oracle的存储过程为什么会报 java.sql.SQLException: Ref 游标无效呀?
    21
    0

    这是xml

    <resultMap id="result_report_QDHW_05"        class="com.sunyard.csr.vo.Report_QDHW_05">
            <result property="TIME_KEY"            column="TIME_KEY"/>
            <result property="AGENT_ID"            column="AGENT_ID"/>
            <result property="AGENT_NAME"            column="AGENT_NAME"/>
            <result property="RESULT_01"            column="RESULT_01"/>
            <result property="RESULT_02"            column="RESULT_02"/>
            <result property="RESULT_03"            column="RESULT_03"/>
            <result property="RESULT_04"            column="RESULT_04"/>
            <result property="RESULT_05"            column="RESULT_05"/>
            <result property="RESULT_06"            column="RESULT_06"/>
            <result property="RESULT_07"            column="RESULT_07"/>
            <result property="RESULT_08"            column="RESULT_08"/>
            <result property="RESULT_09"            column="RESULT_09"/>
            <result property="RESULT_10"            column="RESULT_10"/>
            <result property="RESULT_11"            column="RESULT_11"/>
            <result property="RESULT_12"            column="RESULT_12"/>
            <result property="RESULT_13"            column="RESULT_13"/>
            <result property="RESULT_14"            column="RESULT_14"/>
        </resultMap>
    <parameterMap id="parameter_report_QDHW_05" class="java.util.HashMap" >    
            <parameter property="BEGIN_DATE"             jdbcType="VARCHAR"     javaType="java.lang.String"     mode="IN"/>
            <parameter property="END_DATE"             jdbcType="VARCHAR"     javaType="java.lang.String"     mode="IN"/>
            <parameter property="STAFF_ID"             jdbcType="VARCHAR"     javaType="java.lang.String"     mode="IN"/>
            <parameter property="STAFF_NAME"             jdbcType="VARCHAR"     javaType="java.lang.String"     mode="IN"/>
            <parameter property="start"     jdbcType="VARCHAR"     javaType="java.lang.String"     mode="IN"/>
            <parameter property="limit"        jdbcType="VARCHAR"     javaType="java.lang.String"     mode="IN"/>
            <parameter property="ret_code"                jdbcType="VARCHAR"    javaType="java.lang.String"        mode="OUT"/>
            <parameter property="ret_message"                jdbcType="VARCHAR"    javaType="java.lang.String"        mode="OUT"/>
            <parameter property="countall"                jdbcType="VARCHAR"    javaType="java.lang.String"        mode="OUT"/>
            <parameter property="cur_ret"                jdbcType="ORACLECURSOR"    javaType="java.sql.ResultSet"      mode="OUT" resultMap="result_report_QDHW_05"/>
        </parameterMap>        
        <procedure  id="report_QDHW_05" resultClass="java.util.HashMap" parameterMap="parameter_report_QDHW_05">
            {call QD_RPT_HW05(?,?,?,?,?,?,?,?,?,?) }
        </procedure >

    这是存储过程

    CREATE OR REPLACE PROCEDURE QD_RPT_HW05
     (BEGINDATE IN VARCHAR2,
      ENDDATE IN VARCHAR2,
      AGENTID IN VARCHAR2,
      AGENTNAME IN VARCHAR2,
      start1         IN NUMBER,
      limit1         IN NUMBER,
      AN_O_RET_CODE         OUT NUMBER,
      AC_O_RET_MSG          OUT VARCHAR2,
      COUNTALL              OUT NUMBER,
      CUR_RET               OUT PKG_PUB_UTILS.REFCURSOR
     )
      ----*****************************************************************
      ----过 程 名:SP_RPT_ANSWERLV_DAY
      ----过程描述:
      ----运行系统:话务系统数据库
      ----输入参数:
      ----输出参数:结果集, 错误代码
      ----依赖的过程和函数:
      ----依赖的视图和源表:
      ----编写人员:
      ----创建日期:2016-06-07
      ----修改人员:
      ----修改日期:
      ----修改原因:
      ----代码版本:
      ----公司名称:Sunyard
      ----COALESCE(t1.TIME_KEY, ''总计'') as TIME_KEY,
      ----*****************************************************************
    as
      limit2 NUMBER := 0;
      execsql VARCHAR2(4000) :='';
    BEGIN
        AN_O_RET_CODE := 0;
        AC_O_RET_MSG  := '操作成功';
    
      execute IMMEDIATE 'TRUNCATE TABLE TB_RPT_RESULT_ALL';
    
      execsql :='insert into TB_RPT_RESULT_ALL (TIME_KEY,AGENT_ID,AGENT_NAME,RESULT_01,RESULT_02,RESULT_03,RESULT_04,RESULT_05,RESULT_06,RESULT_07,RESULT_08,RESULT_09,RESULT_10,RESULT_11,RESULT_12,RESULT_13,RESULT_14)
      (select  COALESCE(t1.time_key, ''总计'') as TIME_KEY,COALESCE(t4.LOGINCODE, ''总计'') as AGENT_ID,COALESCE(t4.name, ''总计'') as AGENT_NAME,
            sum(n_inbound) as RESULT_01,
           to_char(trunc(sysdate)+round(case when sum(n_inbound)=0 then 0 else to_number(sum(t_inbound))/sum(n_inbound) end, 4)/(60*60*24),''hh24:mi:ss'') as RESULT_02,
           to_char(trunc(sysdate)+round(case when sum(n_work)=0 then 0 else to_number(sum(t_work))/sum(n_work) end, 4)/(60*60*24),''hh24:mi:ss'') as RESULT_03,
           floor(sum(T_LOGIN)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(T_LOGIN)/(60*60*24),''hh24:mi:ss'') as RESULT_04,
           floor(sum(T_WAIT)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(T_WAIT)/(60*60*24),''hh24:mi:ss'') as RESULT_05,
           floor(sum(t_inbound)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(t_inbound)/(60*60*24),''hh24:mi:ss'') as RESULT_06,
           floor(sum(T_WORK)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(T_WORK)/(60*60*24),''hh24:mi:ss'') as RESULT_07,
           floor(sum(T_NOT_READY_TIME)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(T_NOT_READY_TIME)/(60*60*24),''hh24:mi:ss'') as RESULT_08,
           floor(sum(t_ring_inbound)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(t_ring_inbound)/(60*60*24),''hh24:mi:ss'') as RESULT_09,
           sum(N_OUTBOUND) as RESULT_10,
            to_char(trunc(sysdate)+round(case when sum(n_outbound)=0 then 0 else to_number(sum(t_outbound))/sum(n_outbound) end, 4)/(60*60*24),''hh24:mi:ss'') as RESULT_11,
           floor(sum(t_outbound)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(t_outbound)/(60*60*24),''hh24:mi:ss'') as RESULT_12,
           to_char(trunc(sysdate)+round(case when sum(n_ring_inbound)=0 then 0 else to_number(sum(t_ring_inbound))/sum(n_ring_inbound) end, 4)/(60*60*24),''hh24:mi:ss'') as RESULT_13,
           to_char(trunc(sysdate)+round(case when sum(N_NOT_READY)=0 then 0 else to_number(sum(T_NOT_READY_TIME))/sum(N_NOT_READY) end, 4)/(60*60*24),''hh24:mi:ss'') as RESULT_14
        from GEN_ETL.R_AG_1_DAY@TO_CCGENESYS t1,
          GEN_ETL.O_AG_1_DAY@TO_CCGENESYS t2
          left join TB_SSO_OPER t4
          on t4.WORKID=t2.object_name
          where t1.object_id=t2.object_id and (n_inbound!=0 or N_OUTBOUND!=0)
        and substr(time_key,1,8) >= '''||BEGINDATE||'''
         and substr(time_key,1,8) <= '''||ENDDATE||'''
       and (  '''||agentid||''' =t4.LOGINCODE or '''||agentid||''' = ''ALL'')and t4.LOGINCODE is not null
       and t4.name like ''%'|| AGENTNAME||'%''
          group by (t4.LOGINCODE,t4.name,t1.time_key)
          union all
          select  ''总计'' as TIME_KEY, ''总计'' as AGENT_ID,''总计'' as AGENT_NAME,
           sum(n_inbound) as RESULT_01,
           to_char(trunc(sysdate)+round(case when sum(n_inbound)=0 then 0 else to_number(sum(t_inbound))/sum(n_inbound) end, 4)/(60*60*24),''hh24:mi:ss'') as RESULT_02,
           to_char(trunc(sysdate)+round(case when sum(n_work)=0 then 0 else to_number(sum(t_work))/sum(n_work) end, 4)/(60*60*24),''hh24:mi:ss'') as RESULT_03,
           floor(sum(T_LOGIN)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(T_LOGIN)/(60*60*24),''hh24:mi:ss'') as RESULT_04,
           floor(sum(T_WAIT)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(T_WAIT)/(60*60*24),''hh24:mi:ss'') as RESULT_05,
           floor(sum(t_inbound)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(t_inbound)/(60*60*24),''hh24:mi:ss'') as RESULT_06,
           floor(sum(T_WORK)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(T_WORK)/(60*60*24),''hh24:mi:ss'') as RESULT_07,
           floor(sum(T_NOT_READY_TIME)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(T_NOT_READY_TIME)/(60*60*24),''hh24:mi:ss'') as RESULT_08,
           floor(sum(t_ring_inbound)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(t_ring_inbound)/(60*60*24),''hh24:mi:ss'') as RESULT_09,
           sum(N_OUTBOUND) as RESULT_10,
            to_char(trunc(sysdate)+round(case when sum(n_outbound)=0 then 0 else to_number(sum(t_outbound))/sum(n_outbound) end, 4)/(60*60*24),''hh24:mi:ss'') as RESULT_11,
           floor(sum(t_outbound)/(60*60*24)) || '' ''||to_char(trunc(sysdate)+sum(t_outbound)/(60*60*24),''hh24:mi:ss'') as RESULT_12,
           to_char(trunc(sysdate)+round(case when sum(n_ring_inbound)=0 then 0 else to_number(sum(t_ring_inbound))/sum(n_ring_inbound) end, 4)/(60*60*24),''hh24:mi:ss'') as RESULT_13,
           to_char(trunc(sysdate)+round(case when sum(N_NOT_READY)=0 then 0 else to_number(sum(T_NOT_READY_TIME))/sum(N_NOT_READY) end, 4)/(60*60*24),''hh24:mi:ss'') as RESULT_14
          from GEN_ETL.R_AG_1_DAY@TO_CCGENESYS t1,
          GEN_ETL.O_AG_1_DAY@TO_CCGENESYS t2
          left join TB_SSO_OPER t4
          on t4.WORKID=t2.object_name
          where t1.object_id=t2.object_id and (n_inbound!=0 or N_OUTBOUND!=0)
          )
          
        ';
      -- execute IMMEDIATE execsql;
      select COUNT (*) INTO COUNTALL from (
      select  COALESCE(t1.time_key, '总计') as TIME_KEY,COALESCE(t4.LOGINCODE, '总计') as AGENT_ID,COALESCE(t4.name, '总计') as AGENT_NAME,
            sum(n_inbound) as RESULT_01,
           to_char(trunc(sysdate)+round(case when sum(n_inbound)=0 then 0 else to_number(sum(t_inbound))/sum(n_inbound) end, 4)/(60*60*24),'hh24:mi:ss') as RESULT_02,
           to_char(trunc(sysdate)+round(case when sum(n_work)=0 then 0 else to_number(sum(t_work))/sum(n_work) end, 4)/(60*60*24),'hh24:mi:ss') as RESULT_03,
           floor(sum(T_LOGIN)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(T_LOGIN)/(60*60*24),'hh24:mi:ss') as RESULT_04,
           floor(sum(T_WAIT)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(T_WAIT)/(60*60*24),'hh24:mi:ss') as RESULT_05,
           floor(sum(t_inbound)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(t_inbound)/(60*60*24),'hh24:mi:ss') as RESULT_06,
           floor(sum(T_WORK)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(T_WORK)/(60*60*24),'hh24:mi:ss') as RESULT_07,
           floor(sum(T_NOT_READY_TIME)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(T_NOT_READY_TIME)/(60*60*24),'hh24:mi:ss') as RESULT_08,
           floor(sum(t_ring_inbound)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(t_ring_inbound)/(60*60*24),'hh24:mi:ss') as RESULT_09,
           sum(N_OUTBOUND) as RESULT_10,
            to_char(trunc(sysdate)+round(case when sum(n_outbound)=0 then 0 else to_number(sum(t_outbound))/sum(n_outbound) end, 4)/(60*60*24),'hh24:mi:ss') as RESULT_11,
           floor(sum(t_outbound)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(t_outbound)/(60*60*24),'hh24:mi:ss') as RESULT_12,
           to_char(trunc(sysdate)+round(case when sum(n_ring_inbound)=0 then 0 else to_number(sum(t_ring_inbound))/sum(n_ring_inbound) end, 4)/(60*60*24),'hh24:mi:ss') as RESULT_13,
           to_char(trunc(sysdate)+round(case when sum(N_NOT_READY)=0 then 0 else to_number(sum(T_NOT_READY_TIME))/sum(N_NOT_READY) end, 4)/(60*60*24),'hh24:mi:ss') as RESULT_14
        from GEN_ETL.R_AG_1_DAY@TO_CCGENESYS t1,
          GEN_ETL.O_AG_1_DAY@TO_CCGENESYS t2
          left join TB_SSO_OPER t4
          on t4.WORKID=t2.object_name
          where t1.object_id=t2.object_id and (n_inbound!=0 or N_OUTBOUND!=0)
          and substr(time_key,1,8) >= ''||BEGINDATE||''
          and substr(time_key,1,8) <= ''||ENDDATE||''
          and (  ''||agentid||'' =t4.LOGINCODE or ''||agentid||'' = 'ALL')and t4.LOGINCODE is not null
          and t4.name like '%'|| AGENTNAME||'%'
          group by (t4.LOGINCODE,t4.name,t1.time_key)
      )
          where
       (( AGENT_ID ='总计' and AGENT_NAME ='总计' and TIME_KEY ='总计' )
          or (AGENT_ID<>'总计' and AGENT_NAME<>'总计') )
      ;
      limit2:=limit1;
      if limit1<0 then
        limit2:=COUNTALL;
      end if;
      --/* 结果集返回 */
      OPEN CUR_RET FOR
      SELECT * FROM ( SELECT  ROWNUM AS ROW_NUM,TT.* FROM (
    select  COALESCE(t1.time_key, '总计') as TIME_KEY,COALESCE(t4.LOGINCODE, '总计') as AGENT_ID,COALESCE(t4.name, '总计') as AGENT_NAME,
            sum(n_inbound) as RESULT_01,
           to_char(trunc(sysdate)+round(case when sum(n_inbound)=0 then 0 else to_number(sum(t_inbound))/sum(n_inbound) end, 4)/(60*60*24),'hh24:mi:ss') as RESULT_02,
           to_char(trunc(sysdate)+round(case when sum(n_work)=0 then 0 else to_number(sum(t_work))/sum(n_work) end, 4)/(60*60*24),'hh24:mi:ss') as RESULT_03,
           floor(sum(T_LOGIN)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(T_LOGIN)/(60*60*24),'hh24:mi:ss') as RESULT_04,
           floor(sum(T_WAIT)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(T_WAIT)/(60*60*24),'hh24:mi:ss') as RESULT_05,
           floor(sum(t_inbound)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(t_inbound)/(60*60*24),'hh24:mi:ss') as RESULT_06,
           floor(sum(T_WORK)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(T_WORK)/(60*60*24),'hh24:mi:ss') as RESULT_07,
           floor(sum(T_NOT_READY_TIME)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(T_NOT_READY_TIME)/(60*60*24),'hh24:mi:ss') as RESULT_08,
           floor(sum(t_ring_inbound)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(t_ring_inbound)/(60*60*24),'hh24:mi:ss') as RESULT_09,
           sum(N_OUTBOUND) as RESULT_10,
            to_char(trunc(sysdate)+round(case when sum(n_outbound)=0 then 0 else to_number(sum(t_outbound))/sum(n_outbound) end, 4)/(60*60*24),'hh24:mi:ss') as RESULT_11,
           floor(sum(t_outbound)/(60*60*24)) || ' '||to_char(trunc(sysdate)+sum(t_outbound)/(60*60*24),'hh24:mi:ss') as RESULT_12,
           to_char(trunc(sysdate)+round(case when sum(n_ring_inbound)=0 then 0 else to_number(sum(t_ring_inbound))/sum(n_ring_inbound) end, 4)/(60*60*24),'hh24:mi:ss') as RESULT_13,
           to_char(trunc(sysdate)+round(case when sum(N_NOT_READY)=0 then 0 else to_number(sum(T_NOT_READY_TIME))/sum(N_NOT_READY) end, 4)/(60*60*24),'hh24:mi:ss') as RESULT_14
        from GEN_ETL.R_AG_1_DAY@TO_CCGENESYS t1,
          GEN_ETL.O_AG_1_DAY@TO_CCGENESYS t2
          left join TB_SSO_OPER t4
          on t4.WORKID=t2.object_name
          where t1.object_id=t2.object_id and (n_inbound!=0 or N_OUTBOUND!=0)
          and substr(time_key,1,8) >= ''||BEGINDATE||''
          and substr(time_key,1,8) <= ''||ENDDATE||''
          and (  ''||agentid||'' =t4.LOGINCODE or ''||agentid||'' = 'ALL')and t4.LOGINCODE is not null
          and t4.name like '%'|| AGENTNAME||'%'
          group by (t4.LOGINCODE,t4.name,t1.time_key)
          
       ) TT  WHERE
       (( AGENT_ID ='总计' and AGENT_NAME ='总计'and TIME_KEY ='总计' )
          or (AGENT_ID<>'总计' and AGENT_NAME<>'总计'))
          order by 1, 2) WHERE
       ROW_NUM BETWEEN  start1  AND  limit2
      ;
      EXCEPTION
        WHEN OTHERS THEN
            AN_O_RET_CODE := -1;
            AC_O_RET_MSG  := '错误代码:' || SQLCODE || CHR(13) || '错误信息:' || SQLERRM;
    END QD_RPT_HW05;
    

    这是报错信息

    ActionServlet................................
    action=========================[com.sunyard.csr.action.GetReportAction@1d0f0db]
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>{END_DATE=20180822, STAFF_NAME=, limit=10, bbtype=typeday, BEGIN_DATE=20180822, STAFF_ID=qd1999, IS_EXPORT_TYPE=3, session=no, start=0, REPORT_TYPE=report_QDHW_05}
    org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [17062];   
    --- The error occurred in com/sunyard/csr/dao/xml/UserCalReport.xml.  
    --- The error occurred while applying a parameter map.  
    --- Check the UserCalReport.parameter_report_QDHW_05.  
    --- Check the output parameters (retrieval of output parameters failed).  
    --- Cause: java.sql.SQLException: Ref 游标无效; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
    --- The error occurred in com/sunyard/csr/dao/xml/UserCalReport.xml.  
    --- The error occurred while applying a parameter map.  
    --- Check the UserCalReport.parameter_report_QDHW_05.  
    --- Check the output parameters (retrieval of output parameters failed).  
    --- Cause: java.sql.SQLException: Ref 游标无效
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
        at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:206)
        at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:296)
        at com.sunyard.csr.dao.SqlExecuteDao.queryListSqlInfo(SqlExecuteDao.java:76)
        at com.sunyard.csr.action.GetReportAction.GetJSONData(GetReportAction.java:825)
        at com.sunyard.csr.action.GetReportAction.execute(GetReportAction.java:58)
        at com.sunyard.struts.RequestProcessor.process(RequestProcessor.java:82)
        at com.sunyard.struts.ActionServlet.process(ActionServlet.java:84)
        at com.sunyard.struts.ActionServlet.doPost(ActionServlet.java:94)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:662)
    Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:   
    --- The error occurred in com/sunyard/csr/dao/xml/UserCalReport.xml.  
    --- The error occurred while applying a parameter map.  
    --- Check the UserCalReport.parameter_report_QDHW_05.  
    --- Check the output parameters (retrieval of output parameters failed).  
    --- Cause: java.sql.SQLException: Ref 游标无效
        at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:185)
        at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList(GeneralStatement.java:123)
        at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:615)
        at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:589)
        at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
        at org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:298)
        at org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:296)
        at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:203)
        ... 33 more
    Caused by: java.sql.SQLException: Ref 游标无效
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
        at oracle.jdbc.driver.OracleStatement.getCursorValue(OracleStatement.java:3851)
        at oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:6011)
        at oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:5802)
        at oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:698)
        at org.apache.commons.dbcp.DelegatingCallableStatement.getObject(DelegatingCallableStatement.java:141)
        at com.ibatis.sqlmap.engine.execution.SqlExecutor.retrieveOutputParameters(SqlExecutor.java:396)
        at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQueryProcedure(SqlExecutor.java:286)
        at com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.sqlExecuteQuery(ProcedureStatement.java:34)
        at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:173)
        ... 40 more
    outString[系统出现异常,系统错误信息:SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [17062];   
    --- The error occurred in com/sunyard/csr/dao/xml/UserCalReport.xml.  
    --- The error occurred while applying a parameter map.  
    --- Check the UserCalReport.parameter_report_QDHW_05.  
    --- Check the output parameters (retrieval of output parameters failed).  
    --- Cause: java.sql.SQLException: Ref 游标无效; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
    --- The error occurred in com/sunyard/csr/dao/xml/UserCalReport.xml.  
    --- The error occurred while applying a parameter map.  
    --- Check the UserCalReport.parameter_report_QDHW_05.  
    --- Check the output parameters (retrieval of output parameters failed).  
    --- Cause: java.sql.SQLException: Ref 游标无效]
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 筱仲马 普通会员 1楼

      这个错误通常是因为你在调用一个SQL存储过程时,试图使用一个不存在的游标。SQL存储过程的游标是用于在SQL语句中访问表或其他数据的,通常由DECLARE语句来创建。

      以下是一个例子:

      ```sql DECLARE @sql NVARCHAR(MAX); SET @sql = 'SELECT * FROM table WHERE column = ' + CAST(1 AS VARCHAR);

      EXECUTE @sql; ```

      在这个例子中,我们使用CAST函数将数字1转换为字符串,然后将其插入到@sql变量中。然而,由于我们没有为这个游标创建一个DECLARE语句,所以当我们尝试使用这个游标时,数据库会抛出一个SQLException

      要解决这个问题,你需要确保你已经为这个游标创建了一个DECLARE语句。这可以通过使用DECLARE语句来创建一个新的游标,或者在DECLARE语句中指定游标名称。例如:

      ```sql DECLARE @sql NVARCHAR(MAX); SET @sql = 'SELECT * FROM table WHERE column = ' + CAST(1 AS VARCHAR);

      DECLARE c cursor for @sql; ```

      在这个例子中,我们使用DECLARE语句创建了一个新的游标c。然后,我们使用c来执行SQL查询。

    更多回答
    扫一扫访问手机版