表字段出现oracle sql语句关键字时

 【现象】:在想一个表中插入数据时,老是报出语法错误。

例如:insert into acc.t_rpt_column_info (COLUMN_ID, TABLE_ID, COLUMN_NAME, order, POSITION, DATA_TYPE, DATA_TYPE_DESC, DICTIONARY_TYPE_ID, CONS_RULE, CONS_DESC, TXT_ID, TXT_COLUMN_ID, IS_SHOW, TAG_TYPE, CAN_MODIFY, HAS_INNER_TABLE, LOG_COLUMN_ID, IS_ENABLED, CAN_INPUT)

values ('ACTIONTYPE', 't_base_account', '操作类型', 1, '01', 's,1,1', '[操作类型]不能为空且必须在字典表中有对照。', 'ACTIONTYPE', '', '必输项', 48, 1, '1', '3', '1', '0', 'column18', '1', '1');

在oracle sql语法中表字段名字是不允许出现oracle保留的关键字,如:select,from,where,and,or,order,group,by 等。如果想要使用关键字可以加“”;

测试:

SQL> create table t1 (order number,group varchar2(10));

create table t1 (order number,group varchar2(10))

                 *

ERROR at line 1:

ORA-00904: : invalid identifier

SQL> create table t1 ("order" number,"group" varchar2(10));

 

Table created.

SQL> desc t1;

 Name                                             Null?    Type

 ----------------------------------------- -------- ----------------------------

 order                                                         NUMBER

 group                                                        VARCHAR2(10)

SQL> insert into t1 (order,group) values (1,test);

insert into t1 (order,group) values (1, 'test')

                *

ERROR at line 1:

ORA-00928: missing SELECT keyword

SQL> insert into t1  values (1,'test');

 

1 row created.

SQL> insert into t1 ("order","group") values (2,'test2');

 

1 row created.

SQL> select * from t1;

 

     order group

---------- ----------

          1 test

          2 test2

这样的表是不是造成很多麻烦啊?

建议表中的字段不要使用oracle保留的关键字。 

要想知道oracle保留了哪些关键字,或者想知道使用的关键字是不是oracle保留的,很简单:

select * from v$reserved_words;

select * from v$reserved_words where keyword = upper('keyword');

还有,存储过程中定义的变量名字不要和表中的字段名一样。如果这样,存储过程编译是可以通过的。但是进入表中的数据不对,这样的错误很难排查的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值