日期:2014-05-16  浏览次数:20329 次

工作中遇到的oracle ORA-XX 错误

1. ORA-00922:选项缺失或无效,一般是语句语法有问题。

?? ?比如命名不对,关键字写错等等。对于非标准的命名,一般采用双引号来创建。

?? ?标识符命名规则:

?? ? ?1)、必须以字母开始。

?? ? ?2)、长度不能超过30个单字节字符。

?? ? ?3)、只能包括A-Z,a-z,0-9,_,$和#。

?? ? ?4)、不能在相同用户下建立两个同名的对象。

?? ? ?5)、不能使用保留字和关键字。

?

2.ORA-00937: 不是单组分组函数

???select t.jnlno,

       sum((t.transferrate - 1) * t.amount) as totalratedamount,
       --t.status,
       t.rewardflg
       --t.rewardjnl,
       --t.shopname
from BUSI_BANK_TRANS_HISTORY t
where t.rewardflg = '0'
group by t.jnlno,t.rewardflg

?? 上面的查询使用了除了包含聚合函数外,还包含了表的某些列,那么你将必须使用group by语句,否则语法通不过。

?? 上面除了聚合函数,还有jnlno,status,rewardfla等,下面的group by都要包含。

?

3.ORA-01756: 引号内的字符串没有正确结束

?

sql.append(" where t.rewardflg = '0' ");

?

???0后面的单引号写掉了一个

?

4.ORA-01747: user.table.column, table.column 或列说明无效

?? 我的sql错误:

??? update busi_bank_trans_history t set t.status = '1', where t.status = '5'

?? 多了个逗号。

???1).表,或者表中的列无效,检查下表,列是否存在

???2).与ORACLE保留字有关 ,建表不能用oracle保留字。

?? 执行下面语句可以查看oracle关键字:

?? select * from v$reserved_words

?????

?