ORA-00904 & ORA-00928与oracle保留字

ORA-00904 & ORA-00928与oracle保留字

从informix中迁移数据到oracle时,发现表的列使用了oracle的保留字level。
下面模拟一下问题解决过程:

 

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
Connected as CAICPROD_7601

 

SQL> CREATE TABLE TEST_RESERVED (LEVEL VARCHAR2(10));

CREATE TABLE TEST_RESERVED (LEVEL VARCHAR2(10))

ORA-00904: : invalid identifier

 

-- 给level加双引号后,建表成功

SQL> CREATE TABLE TEST_RESERVED ("LEVEL" VARCHAR2(10));

Table created

 

 

SQL> insert into TEST_RESERVED (LEVEL) values ('abcd');

insert into TEST_RESERVED (LEVEL) values ('abcd')

ORA-00928: missing SELECT keyword

 

SQL> INSERT INTO TEST_RESERVED VALUES('abcd');

1 row inserted

 

--同样给level加双引号后,插入数据成功

SQL> insert into TEST_RESERVED ("LEVEL") values ('abcde');

1 row inserted

SQL> commit;

 

Commit complete

SQL> SELECT * FROM TEST_RESERVED;

LEVEL
----------
abcd
abcde

 

 

oracle中每个版本的保留字略有差别,可以从V$RESERVED_WORDS中获取。
下述SQL查询出了oracle中完全禁止使用的保留字。

 

SQL>SELECT * FROM  V$RESERVED_WORDS WHERE  reserved='Y';

 

 

虽然通过加双引号可以避免oracle保留字带来的问题,但给以后的使用和维护带来了麻烦。

所以还是尽量避免不使用oracle的保留字做列名。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值