ORA-00907 “缺失右括号”
当出现这个问题时先检查字面意思, 是否是真正的SQL结构有问题,若无问题,需要看一下是不是传值中有 “英文”状态下的单引号 “ ' ”, 因为这个符号在拼接SQL 时,会将该符号以后的内容截断,所以会出现这个问题。
索引
字段定义的长度对索引也有较大影响。
ORACLE对索引长度还是有一定限制,8i官方文档说明单条记录索引信息的长度不能超过数据块大小的40%,9i中是75%,实际上也差不多,具体可以见jametong的
http://www.dbthink.com/?p=20
这篇文档,里面有详细的测试结果。
如果你的数据块大小是8K,那么索引字段的定义长度不能超过6398,比如,你要给表上2个VARCHAR(4000)字段建组合索引,创建时会直接报错。另外索引组织表及在线重建索引(因为中间会临时创建一个索引组织表)允许的索引信息长度更小,只能是数据块大小的40%,实际中8K的数据块大小,要使用在线重建索引,那定义的长度不能超过3215。从以上可以看出,数据块大小为8K时,设计字段时如果要定义为VARCHAR(4000),那这个字段就不能考虑建立索引,因为即使能建上,也不能做在线重定义操作,DBA要进行索引维护时只能停止应用,这将对系统的可用性产生较大影响。