表字段出现oracle sql语句关键字时
2013-03-29 22:43
267 查看
【现象】:在想一个表中插入数据时,老是报出语法错误。
例如: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');
还有,存储过程中定义的变量名字不要和表中的字段名一样。如果这样,存储过程编译是可以通过的。但是进入表中的数据不对,这样的错误很难排查的。
例如: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');
还有,存储过程中定义的变量名字不要和表中的字段名一样。如果这样,存储过程编译是可以通过的。但是进入表中的数据不对,这样的错误很难排查的。
相关文章推荐
- 表字段出现oracle sql语句关键字时
- oracle 实现多字段匹配一个关键字查询语句
- Oracle中查询某字段不为空或者为空的SQL语句怎么写
- 当执行SQL(ORACLE)时判段另一个字段的值去执行不同SQL,及 CASE WHEN 语句的使用
- oracle sql语句查询时 表名和字段名要加双引号的问题详解,oraclesql
- 关于Oracle与SqlServer中获取所有字段、主键、外键的sql语句
- powerbuilder导出的sql建表语句在oracle中,出现“ora-00942: 表或视图不存在 ”
- Oracle sql语句基本命令 关键字
- sql语句查询Oracle|sql server|access 数据库里的所有表名,字段名
- 拼团代付时出现缺少字段问题,添加字段的SQL语句
- oracle列(字段)操作相关SQL语句
- oracle使用sql语句增加字段示例(sql删除字段语句)
- oracle使用sql语句增加字段示例(sql删除字段语句)_oracle
- Oracle中使用SQL语句拼接DAL层模型中的字段
- 关于oracle sql语句查询时表名和字段名要加双引号的问题详解
- 用SQL语句实现一个字段中,某个字符出现的次数
- Oracle 获取表带字段备注SQL语句存储过程
- oracle 实现多字段匹配一个关键字查询语句
- oracle新建用户执行sql查询语句出现错误ORA-00942:表或视图不存在
- oracle联合查询并更新一个表字段的sql语句