Oracle中遇到的错误

1. ORA-00937: 不是单组分组函数  和  不是group by表达式

--select count(corp_tn),state_code from t_oa_main where corp_tn='jiayuanshu' and oa_code='QJ_PT_0005_2017_3_0004' group by corp_tn; --不是group by表达式
--select count(corp_tn),state_code from t_oa_main where corp_tn='jiayuanshu' and oa_code='QJ_PT_0005_2017_3_0004' --ORA-00937: 不是单组分组函数
--select count(corp_tn),state_code from t_oa_main where corp_tn='jiayuanshu' and oa_code='QJ_PT_0005_2017_3_0004' group by state_code; --ok

  

2. ORA-02296:无法启用(....)找到空值

  原因:①:表中本来有数据  ②添加一个列为主键列  导致新添加的主键列为空,这样就会报这样的错

  解决方案:要么就是将表中的数据全部删除,要么,先添加列,然后在列中添加数据,之后在设置为主键

3. ORA-12991:引用的列出于多列约束条件

   原因:①:删除一个主键列  

   解决方案:先将撤销这个列是主键列,应用,之后再删除这个列

4. ORA-01449:列包含NULL值;无法将其变更为NOT NULL

   原因:①:添加一个列,并且同时将列设置为主键,应用

   解决方案:先添加这个列,应用,之后在设置为主键,可能会报  2 的错误,然后解决方案也有了

5. ORA-02298:无法验证(...)-未找到父项关键字

   原因:①:外键引用的那个表中的列没有对应的数据

             ②:你要插入的表A里,有外键连接到另一个表B的主键,你在表A的外键列插入的值,在表B的主键列找不到就不能插入。

6. ORA-00054:资源正忙,但指定以NOWAIT方式获取资源,或者超时失效

   原因:关了,重启!

7. java.sql.SQLException: 无效的列索引,

①:查?号有没有问题

②:查返回值有没有对上

 8. 

java.sql.SQLException: ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'P_OA_PERS_SELECT' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored

原因:传过去多了一个oderlist,忘了在存储过程中添加orderlist参数

9. ORA-01006: 绑定变量不存在

  ?号之间没有逗号

10.ORA-01861: 文字与格式字符串不匹配

Java中字段的类型与传到oracle存储过程的字段类型不一致

  

11. 索引中丢失  IN 或 OUT 参数:: 20

   参数个数不对,

12. 调用 'P_OUTCORP_PAGESELECT' 时参数个数或类型错误

  参数个数和类型不对

13. ORA-00918:未明确定义列

--这么执行没有问题
select t.id,t.kind_code,t.kind_upcode,t.kind_level,t.kind_name,t.kind_fname,t1.kind_name from t_kind t left join t_kind t1 on t.id=t1.id and t.kind_upcode = t1.kind_code where t.id= '2013'
--报错:a.*(红)报:未明确定义列:原因是,有两个kind_name 导致出了问题,
select a.*,rownum rn from( select t.id,t.kind_code,t.kind_upcode,t.kind_level,t.kind_name,t.kind_fname,t1.kind_name from t_kind t left join t_kind t1 on t.id=t1.idand t.kind_upcode = t1.kind_code where t.id= '2013') a

14. 调用存储过程时,报查询异常null,空指针异常

cs.execute();  //java.sql.CallableStatement  我的原因是sql语句中有乱码,把乱码改掉就好了

15. Java.sql.SQLException: 无法转换为内部表示

      很可能是因为数据库某字段的类型出错了,

16. 调用存储过程报,java.lang.NullPointerException 

//调用存储过程报空指针异常 ,原因是存储过程中sql有乱码,eg:select a,b,c from t 这个sql中a字段名为乱码  ,在pl/sql中得到的cursor不会报错,并且能得到结果,但是到了java这边接收到cursor时报错了,
callableStatement .execute();

     在pl/sql中测试存储过程,cursor中字段如下图

      

     在java中执行 callableStatement .execute();  这条语句就会报错,报空指针异常

原文地址:https://www.cnblogs.com/an5211/p/6772490.html