Oracle学习之路の常见错误

最近需要写存储过程,总结下自己曾经遇到的问题.总结是按照目前遇到的问题写的,难免有不周到的地方,还望各位看官海涵.


ORA-00979: 不是 GROUP BY 表达式:

目前遇到的原因有二:

1.出现在select语句中的字段,除非是出现在聚合函数当中,否则必须出现在group by后面

2.同时使用了group by 和order by时, order by的字段必须选自group by当中的字段

错误示范1:

select count(a), b, c 
from mytable
where conditions
group by b;
--错误,因为c出现在了select当中,group by中也必须有c,a出现在聚合函数中,所以可以不出现在group by 当中
错误示范2:

select count(a), b, c
from mytable
where conditions
group by b, c
order by x
--错误,因为order by的字段不是选自group by的字段


ORA-01830: 日期格式图片在转换整个输入字符串之前结束:

出现这种情况常见在使用to_date(string, format)转换日期的时候,在转换前请确认待转换的字符串的格式,通常是你给定的format的长度比待转换的字符串短了

错误示范:

select to_date('2015-01-03 16:08:32','yyyy-mm-dd') from dual;
--待转换的日期的字符串比'yyyy-mm-dd'长

正确示范:

select to_date('2015-01-03 16:08:32','yyyy-mm-dd hh24:mi:ss') from dual;



ORA-01810: 格式代码出现两次:

在Oracle中,分钟的格式代码是mi而不是mm,所以mm会被视为是月份的格式代码,正确的 时:分:秒 的format应该是 hh24:mi:ss

正确示范:

select to_char(to_date('2015-01-03 16:08:32','yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual;
输出: 2015-01-03 16:08:32


ORA-00984列在此处不允许:
目前遇到的原因也有二:
1.insert插入操作中字符型的两端要添加单引号
2.如果使用了游标cursor, 可能是游标的名字错了
 
 



你可能感兴趣的:(oracle,sql)