`

SQL Warning: 17110, SQLState: null

阅读更多
最近写项目遇到这样一个警告。我用的数据库是oracle9i
WARN [http-8088-2] JDBCExceptionReporter.logWarnings(54) | SQL Warning: 17110, SQLState: null
WARN [http-8088-2] JDBCExceptionReporter.logWarnings(55) | Warning: 执行完毕, 但带有警告
程序能够正常执行,但是。如果一次录入多条数据就报错:超出打开游标的最大数

网上有前辈说group by子句有null值。经过不懈努力终于解决问题:原来我在做sum函数的时候,没有处理空值。
我原来的sql语句是这样写的:
select pm.mouse_id as lid,
       pm.monitor_year || '-' || pm.monitor_month as monitortime,
       decode(pm.biotope, '01', '室内', '02', '室外') biotopes,
       z.cnname as county,
       pm.report_unit,
       pmi1.hjs,
       pmi1.xjs,
       pmi1.hxs,
       pmi1.hxjs,
       pmi1.hms,
       pmi1.scm,
       pmi1.qt,
       (select [ORGCODE] from dual) orgcode
  from pidera_mouse pm
  left join (select pmi.mouse_reference_id,
           sum(decode(pmi.mouse_name, '01', pmi.mouse_num)) hjs,
           sum(decode(pmi.mouse_name, '02', pmi.mouse_num)) xjs,
           sum(decode(pmi.mouse_name, '03', pmi.mouse_num)) hxs,
           sum(decode(pmi.mouse_name, '04', pmi.mouse_num)) hxjs,
           sum(decode(pmi.mouse_name, '05', pmi.mouse_num)) hms,
           sum(decode(pmi.mouse_name, '06', pmi.mouse_num)) scm,
           sum(decode(pmi.mouse_name, '07', pmi.mouse_num)) qt
         from pidera_mouse_info pmi
             group by pmi.mouse_reference_id) pmi1
                                    on pm.mouse_id =pmi1.mouse_reference_id
  join zonecode z on pm.zonecode = z.zonecode
 where pm.del_state != 1
   and [ZONECODE]
   and [DISTRICT]
   and [BEGINDATE]
   and [ENDDATE]

后来加入空值处理函数coalesce
select pm.mouse_id as lid,
       pm.monitor_year || '-' || pm.monitor_month as monitortime,
       decode(pm.biotope, '01', '室内', '02', '室外') biotopes,
       z.cnname as county,
       pm.report_unit,
       coalesce(pmi1.hjs,0) hjs,
       coalesce(pmi1.xjs,0) xjs,
       coalesce(pmi1.hxs,0) hxs,
       coalesce(pmi1.hxjs,0) hxjs,
       coalesce(pmi1.hms,0) hms,
       coalesce(pmi1.scm,0) scm,
       coalesce(pmi1.qt,0) qt,
       (select [ORGCODE] from dual) orgcode
  from pidera_mouse pm
  left join (select pmi.mouse_reference_id,
       		sum(coalesce(decode(pmi.mouse_name, '01', pmi.mouse_num),0)) hjs,
       		sum(coalesce(decode(pmi.mouse_name, '02', pmi.mouse_num),0)) xjs,
      		sum(coalesce(decode(pmi.mouse_name, '03', pmi.mouse_num),0)) hxs,
       		sum(coalesce(decode(pmi.mouse_name, '04', pmi.mouse_num),0)) hxjs,
       		sum(coalesce(decode(pmi.mouse_name, '05', pmi.mouse_num),0)) hms,
       		sum(coalesce(decode(pmi.mouse_name, '06', pmi.mouse_num),0)) scm,
       		sum(coalesce(decode(pmi.mouse_name, '07', pmi.mouse_num),0)) qt
  	     from pidera_mouse_info pmi
             group by pmi.mouse_reference_id) pmi1
                                    on pm.mouse_id =pmi1.mouse_reference_id
  join zonecode z on pm.zonecode = z.zonecode
 where pm.del_state != 1
   and [ZONECODE]
   and [DISTRICT]
   and [BEGINDATE]
   and [ENDDATE]

问题解决啦!。
分享到:
评论

相关推荐

    SQLState错误码查表

    SQLSTATE 错误码是 SQL 语句执行过程中出现的错误代码,它们是标准化的错误代码,可以帮助开发者快速地定位和解决问题。本文档提供了 SQLSTATE 错误码的详细信息,包括错误代码、错误描述和解决方法。 SQLSTATE ...

    SQL错误代码大全

    收集汇总了设计者在SQL 编程中所有出现的错误代码提示大全 希望对大家有所帮助

    DB2异常代码查询大全

    46. **+64501528**:表示列允许NULL值,但在定义时设置了NOT NULL。 47. **+65001538**:表示锁无法获取。 48. **+65301551**:表示指定位移未定义。 49. **+65501597**:表示GROUP权限设置错误。 50. **+65801600**...

    DB2_SQLSTATE__消息异常

    SQLSTATE值是SQL标准中定义的一系列五字符代码,用于标识SQL语句执行的状态,包括成功或失败的具体原因。 #### SQLSTATE 值详解 在给出的部分内容中,列出了大量的SQLSTATE值及其简要含义。这里将对这些状态码进行...

    db2 错误码 大全

    - **SQLSTATE**: SQL警告状态 - **描述**: 表示SQL语句执行成功,但是存在一些警告信息。 ##### 3. 数据库表之间的关系不一致 - **SQLCODE**: +01201 - **SQLSTATE**: 545 - **描述**: 当数据库表之间的外键约束...

    sql数据库死锁查询工具

    在SQL数据库管理中,死锁和阻塞是常见的问题,特别是在多用户环境下,它们可能导致系统性能下降甚至数据丢失。理解并有效地处理这些问题至关重要。本文将深入探讨“sql数据库死锁查询工具”及其在解决数据库死锁和...

    oracle数据库错误大全

    2. **错误解决方案**:除了错误解释,大全还会提供可能的解决策略,包括修改SQL语句、调整系统参数、检查硬件资源或更新数据库软件。 3. **案例分析**:可能会有实际的错误案例分析,帮助读者理解在特定环境下错误...

    DB2的SQL、sqlcode、sqlstate错误码中文大全

    因此,本文旨在整理 DB2 的 SQL、sqlcode、sqlstate 错误码大全,提供详细的错误码说明和用户响应方法,帮助用户快速解决问题,提高工作效率。 SQL0000 - SQL0099 在 DB2 中,SQL0000 - SQL0099 错误码系列主要...

    oracle和Hibernated的结合

    8. **Criteria和HQL查询**:Hibernate提供了一种比SQL更高级的查询语言——Hibernate Query Language (HQL),以及Criteria API,它们允许开发者以面向对象的方式编写查询,避免了直接编写SQL的复杂性。 9. **性能...

    数据库错误代码和消息

    这些错误信息会被用于生成MySQL源代码中的相关头文件,例如`include/mysqld_error.h`、`include/mysqld_ername.h`和`include/sql_state.h`。值得注意的是,由于错误信息的更新频率较高,因此`share/errmsg.txt`文件...

    mysql的c++ 基本API

    C++ API提供了`sql::SQLException`类来处理异常,以及`sql::SQLState`类来获取错误状态代码。 4. **执行SQL语句**: 使用`sql::Statement`对象,你可以准备和执行SQL语句。例如,创建一个新表: ```cpp sql::...

    MySQL导入sql脚本错误:2006 解决方法

    MySQL导入sql脚本错误:2006 – MySQL server has gone away 到如一些小脚本很少报错,但最近导入一个10+M的SQL脚本,却重复报错: Error occured at:2014-03-24 11:42:24 Line no.:85 Error Code: 2006 - MySQL ...

    解决SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded_runtimeerror怎么修复

    在MySQL数据库操作中,"SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded" 是一个常见的错误,它意味着在执行事务时,系统等待锁定资源的时间超过了预设的限制。这个错误通常发生在并发环境中,当...

    查询死锁数据库

    查询死锁数据库,当同一张表存在同时写,并且写的过程比较耗时,此时就会引起数据库死锁

    sqlServer执行存储过程报错:42000,执行该sql即可

    sqlServer执行存储过程报错:42000 - [SQL Server]SQL Server 阻止了对组件“Ole Automation Procedures”的 过程“sys.sp_OACreate”的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以...

    SQL错误状态的提示信息

    为了更好地理解和处理这些错误,SQL标准定义了一套错误代码体系——SQLSTATE,它可以帮助开发者和数据库管理员快速定位问题所在。本文将详细介绍SQLSTATE及其含义,并对部分常见SQLSTATE进行解释。 #### SQLSTATE...

    详解DB2 sqlstate 57016 SQLCODE=-668 原因码 "7"错误的快速解决办法

    SQLSTATE 57016是一个标准的SQL状态码,它表明在处理SQL语句时发生了异常。而SQLCODE -668是一个DB2特定的错误代码,意味着“请求的操作被拒绝,因为对象正被另一个用户或系统进程使用”。当这个错误伴随着原因码“7...

    oracle错误一览表.txt

    oracle 错误一览表 oracle error-code

    DB2常用错误信息大全

    因为SQL语句引用一个远程对象,不能为该SQL语句执行EXPLAIN (+21801537) - **SQLCODE**: +21801537 - **SQLSTATE**: 01537 - **说明**: 当SQL语句涉及远程对象时,DB2无法生成该语句的EXPLAIN计划。这可能是因为...

    对表进行任何操作都不被允许,提示SQLSTATE=57016 SQLCODE=-668 ,原因码 \"7\"的错误:SQL0668N Operation not

    在SQL数据库操作中,我们可能会遇到各种错误代码,其中SQLSTATE=57016 SQLCODE=-668是一个常见的错误,特别是在IBM DB2数据库系统中。这个错误通常表示一个操作无法执行,因为对象(如表)正被其他事务占用或者处于...

Global site tag (gtag.js) - Google Analytics