************************************************************************
调试信息:报表记录查询SQL语句=select ROWNUM as num,H1 as H1Code,(select useunitname from useunitcode m where m.useunitid=h_bbjl.H1) as H1,H2,F1 as F1Code,(select xm from h_ygxx m where m.rybm=h_bbjl.F1) as F1,F2 as F2Code,(select xm from h_ygxx m where m.rybm=h_bbjl.F2) as F2,F3,reportState,reportInitiatorID,reportInitiateDatetime,reportModifierID,reportModifyDatetime from h_bbjl where reportSerialNumber='h_ycjcldhtqk'  and k1='21081102' and k2='2008'
************************************************************************
************************************************************************
调试信息:报表表体查询SQL语句=select ROWNUM as num,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,L16,L17,L18,L19,L20,L21,L22,L23,L24,L25,L26 from h_ycjcldhtqk where reportSerialNumber='h_ycjcldhtqk'  and reportId in (select reportId from h_bbjl where reportSerialNumber='h_ycjcldhtqk'  and k1='21081102' and k2='2008')
************************************************************************
com.westerasoft.kdcerp.common.exception.ConnectionException: 查询数据库失败!
at com.westerasoft.kdcerp.common.dataaccess.DBconn.Query(DBconn.java:226)
at com.westerasoft.kdcerp.hmn.hmnstat.RavelLaboulContactProxy.getReportDatas(RavelLaboulContactProxy.java:301)
at com.westerasoft.kdcerp.servlets.hmnservlet.hmnstat.RavelLaboulContactServlet.doPerformGet(RavelLaboulContactServlet.java:81)
at com.westerasoft.kdcerp.servlets.hmnservlet.hmnstat.RavelLaboulContactServlet.doGet(RavelLaboulContactServlet.java:25)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:272)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.westerasoft.kdcerp.common.AppFilter.doFilter(AppFilter.java:104)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3151)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1973)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1880)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1310)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
Nested Exception:
java.sql.SQLException: ORA-00978: 嵌套分组函数没有 GROUT BY at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:626)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:113)
at oracle.jdbc.driver.T4CStatement.execute_for_describe(T4CStatement.java:431)
at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:951)
at oracle.jdbc.driver.T4CStatement.execute_maybe_describe(T4CStatement.java:463)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1046)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1192)
at weblogic.jdbc.wrapper.Statement.executeQuery(Statement.java:412)
at com.westerasoft.kdcerp.common.dataaccess.DBconn.Query(DBconn.java:223)
at com.westerasoft.kdcerp.hmn.hmnstat.RavelLaboulContactProxy.getReportDatas(RavelLaboulContactProxy.java:301)
at com.westerasoft.kdcerp.servlets.hmnservlet.hmnstat.RavelLaboulContactServlet.doPerformGet(RavelLaboulContactServlet.java:81)
at com.westerasoft.kdcerp.servlets.hmnservlet.hmnstat.RavelLaboulContactServlet.doGet(RavelLaboulContactServlet.java:25)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:272)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.westerasoft.kdcerp.common.AppFilter.doFilter(AppFilter.java:104)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3151)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1973)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1880)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1310)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
<2008-12-24 下午04时27分44秒 CST> <Error> <HTTP> <BEA-101017> <[weblogic.servlet.internal.WebAppServletContext@19a19fd - name: 'liquan', context-path: '/liquan'] Root cause of ServletException.
com.westerasoft.kdcerp.common.exception.BusinessException: 全新查询报表记录出错,请重试!
at com.westerasoft.kdcerp.hmn.hmnstat.RavelLaboulContactProxy.getReportDatas(RavelLaboulContactProxy.java:330)
at com.westerasoft.kdcerp.servlets.hmnservlet.hmnstat.RavelLaboulContactServlet.doPerformGet(RavelLaboulContactServlet.java:81)
at com.westerasoft.kdcerp.servlets.hmnservlet.hmnstat.RavelLaboulContactServlet.doGet(RavelLaboulContactServlet.java:25)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
Truncated. see log file for complete stacktrace

解决方案 »

  1.   

    ,(select xm from h_ygxx m where m.rybm=h_bbjl.F1) as F1
    对于这种字段里返回结果集的写法最不感冒
      

  2.   

    没有人帮我么,说说是那里出错了就好。是SQL里的错误么?为什么说是GROUT BY ,不是GROUP BY 么?
      

  3.   

    是不是显示出来的信息少啊,没看到你sql语句中用分组了?
      

  4.   

    看看你的SQL
    SELECT ROWNUM AS NUM,
           H1 AS H1CODE,
           (SELECT USEUNITNAME FROM USEUNITCODE M WHERE M.USEUNITID = H_BBJL.H1) AS H1,
           H2,
           F1 AS F1CODE,
           (SELECT XM FROM H_YGXX M WHERE M.RYBM = H_BBJL.F1) AS F1,
           F2 AS F2CODE,
           (SELECT XM FROM H_YGXX M WHERE M.RYBM = H_BBJL.F2) AS F2,
           F3,
           REPORTSTATE,
           REPORTINITIATORID,
           REPORTINITIATEDATETIME,
           REPORTMODIFIERID,
           REPORTMODIFYDATETIME
      FROM H_BBJL
     WHERE REPORTSERIALNUMBER = 'h_ycjcldhtqk'
       AND K1 = '21081102'
       AND K2 = '2008';
     SELECT ROWNUM AS NUM,
              L1,
              L2,
              L3,
              L4,
              L5,
              L6,
              L7,
              L8,
              L9,
              L10,
              L11,
              L12,
              L13,
              L14,
              L15,
              L16,
              L17,
              L18,
              L19,
              L20,
              L21,
              L22,
              L23,
              L24,
              L25,
              L26
         FROM H_YCJCLDHTQK
        WHERE REPORTSERIALNUMBER = 'h_ycjcldhtqk'
          AND REPORTID IN (SELECT REPORTID
                             FROM H_BBJL
                            WHERE REPORTSERIALNUMBER = 'h_ycjcldhtqk'
                              AND K1 = '21081102'
                              AND K2 = '2008');
      

  5.   

    没有看出有什么问题,自己把SQL语句调试一下!没有问题就是程序出错!
      

  6.   

    SELECT USEUNITNAME FROM USEUNITCODE M WHERE M.USEUNITID = H_BBJL.H1
    SELECT XM FROM H_YGXX M WHERE M.RYBM = H_BBJL.F1
    SELECT XM FROM H_YGXX M WHERE M.RYBM = H_BBJL.F2估计是这几个子查询选出复数的数据了
      

  7.   

    SELECT max(USEUNITNAME) FROM USEUNITCODE M WHERE M.USEUNITID = H_BBJL.H1 
    SELECT max(XM) FROM H_YGXX M WHERE M.RYBM = H_BBJL.F1 
    SELECT max(XM) FROM H_YGXX M WHERE M.RYBM = H_BBJL.F2 
    这样应该就行但是不知道 符不符合搂住的业务要求
      

  8.   

    多谢大家了,到PL_Sql中产看确实是SQL的错误,不过这个东西不是我自己写的业务也不是很清楚,所以是在不知道怎么改。交给别人处理了,还是多谢大家的帮助。