一、常见报错码
ORA-904:
无效的标识符。代码中查询语句中已新增变量,但数据库数据结构未变更。
ORA-1001:
无效游标。可能关联的游标还没有打开或者已经关闭的时候,直接fetch/close时会报错ora-1001。
ORA-1405:
1.读取的列值为 NULL。所以PROC *C中select语句都需要做nvl()处理;只要PROC里面会有此报错,在PLSQL中执行存储过程时并不会报错。
2.数据库中ename为null,为了防止报错使用nvl去除后,结果还是报错ora-01405,最终定位发先是trim函数的问题。 注意因为TRIM函数处理空格后,对纯空格的字符串结果还是NULL;
select trim(nvl(ename,' ')) into ename from emp where empno = 9999;
trim处理产生Null.png
ORA-2112:
too many rows。发生在select ... into .... 中,通常由于数据库中预期的唯一索引出现了重复记录。开游标fetch时候不会有这个问题,此时即使是重复的,也是一条一条获取的。
二、常用知识
1.proc变化与oracle数据结构变化的逻辑联系
1.proc中查询语句未改变,此时数据库的相关表结构增加字段时;不影响原查询;
2.proc中查询语句未改变,此时数据库的相关表结构删除字段时;报错ORA-904,存在未定义的字符(即删掉的字段);
3.proc中查询语句增加字段,数据库中未增加时,报错ORA-904;