Oracle关键字
通过PD建模,生成SQL语句导入Oracle中执行,生成表都没有问题。但是在删除,添加记录的过程中老是抛出异常,比如“表或视图不存在”;
这是生成的PL\SQL语句:

View Code
1 /*==============================================================*/
2 /* Table: "Branch" */
3 /*==============================================================*/
4 create table "Branch"
5 (
6 "Branch_id" INTEGER not null,
7 "Branch_name" NVARCHAR2(32),
8 "Type" NVARCHAR2(32),
9 Y BINARY_DOUBLE,
10 X BINARY_DOUBLE,
11 "Mark" NVARCHAR2(256),
12 constraint PK_BRANCH primary key ("Branch_id")
13 );
14
15 /*==============================================================*/
16 /* Table: "CurrentBranchStatistic" */
17 /*==============================================================*/
18 create table "CurrentBranchStatistic"
19 (
20 "Branch_id" INTEGER,
21 "Number" INTEGER
22 );
可以看到表名和字段名都被加了双引号,而且有些字段还用了关键字,如Number,Type
通过v$reserved_words视图可以查看关键字信息。
以system用户登录:
select * from v$reserved_words ;
可以查询到1700多条记录

字段类型及解释:Column Datatype Description
KEYWORD VARCHAR2(30): Name of the keyword
LENGTH NUMBER: Length of the keyword
RESERVED VARCHAR2(1) :A value of Y means that the keyword cannot be used as an identifier. A value of N means that it is not reserved.
Y表示该关键字是保留字,不能用作标示符
RES_TYPE VARCHAR2(1) :A value of Y means that the keyword cannot be used as a type name. A value of N means that it is not reserved.
RES_ATTR VARCHAR2(1) :A value of Y means that the keyword cannot be used as an attribute name. A value of N means that it is not reserved.
RES_SEMI VARCHAR2(1) :A value of Y means that the keyword is not allowed as an identifier in certain situations, such as in DML. A value of N means that it is not reserved. 值为Y表示关键字在特定情况下不允许作为标示符,比如DML(数据库操纵语言)
DUPLICATE VARCHAR2(1) :A value of Y means that the keyword is a duplicate of another keyword. A value of N means that it is not a duplicate.
1.Oracle有许多保留字(Reserved Words)和关键字(Keywords),其区别是保留字不可以用来作为标识符, 关键字可以用来作为标识符,但不建议使用。
2.一般保留字不能用做对象名。如果一定要用可以加双引号。
查询:select * from v$reserved_words where RESERVED='Y';结果如下
| |
KEYWORD |
LENGTH |
RESERVED |
RES_TYPE |
RES_ATTR |
RES_SEMI |
DUPLICATE |
| 1 |
FLOAT |
5 |
Y |
N |
N |
N |
N |
| 2 |
TRIGGER |
7 |
Y |
N |
N |
N |
N |
| 3 |
CHECK |
5 |
Y |
N |
N |
N |
N |
| 4 |
TABLE |
5 |
Y |
N |
N |
N |
N |
| 5 |
CONNECT |
7 |
Y |
N |
N |
N |
N |
| 6 |
SYNONYM |
7 |
Y |
N |
N |
N |
N |
| 7 |
UNIQUE |
6 |
Y |
N |
N |
N |
N |
| 8 |
DROP |
4 |
Y |
N |
N |
N |
N |
| 9 |
ELSE |
4 |
Y |
N |
N |
N |
N |
| 10 |
SIZE |
4 |
Y |
N |
N |
N |
N |
| 11 |
IN |
2 |
Y |
N |
N |
N |
N |
| 12 |
RENAME |
6 |
Y |
N |
N |
N |
N |
| 13 |
WHERE |
5 |
Y |
N |
N |
N |
N |
| 14 |
HAVING |
6 |
Y |
N |
N |
N |
N |
| 15 |
SHARE |
5 |
Y |
N |
N |
N |
N |
| 16 |
UNION |
5 |
Y |
N |
N |
N |
N |
| 17 |
/ |
1 |
Y |
N |
N |
N |
N |
| 18 |
SET |
3 |
Y |
N |
N |
N |
N |
| 19 |
( |
1 |
Y |
N |
N |
N |
N |
| 20 |
NOCOMPRESS |
10 |
Y |
N |
N |
N |
N |
| 21 |
VALUES |
6 |
Y |
N |
N |
N |
N |
| 22 |
| |
1 |
Y |
N |
N |
N |
N |
| 23 |
REVOKE |
6 |
Y |
N |
N |
N |
N |
| 24 |
WITH |
4 |
Y |
N |
N |
N |
N |
| 25 |
NUMBER |
6 |
Y |
N |
N |
N |
N |
| 26 |
PRIOR |
5 |
Y |
N |
N |
N |
N |
| 27 |
FROM |
4 |
Y |
N |
N |
N |
N |
| 28 |
SELECT |
6 |
Y |
N |
N |
N |
N |
| 29 |
BY |
2 |
Y |
N |
N |
N |
N |
| 30 |
SMALLINT |
8 |
Y |
N |
N |
N |
Y |
| 31 |
MINUS |
5 |
Y |
N |
N |
N |
N |
| 32 |
THEN |
4 |
Y |
N |
N |
N |
N |
| 33 |
VARCHAR2 |
8 |
Y |
N |
N |
N |
N |
| 34 |
INTEGER |
7 |
Y |
N |
N |
N |
Y |
| 35 |
ALL |
3 |
Y |
N |
N |
N |
N |
| 36 |
< |
1 |
Y |
N |
N |
N |
N |
| 37 |
DELETE |
6 |
Y |
N |
N |
N |
N |
| 38 |
AS |
2 |
Y |
N |
N |
N |
N |
| 39 |
PCTFREE |
7 |
Y |
N |
N |
N |
N |
| 40 |
TO |
2 |
Y |
N |
N |
N |
N |
| 41 |
ASC |
3 |
Y |
N |
N |
N |
N |
| 42 |
OPTION |
6 |
Y |
N |
N |
N |
N |
| 43 |
INTO |
4 |
Y |
N |
N |
N |
N |
| 44 |
DESC |
4 |
Y |
N |
N |
N |
N |
| 45 |
CLUSTER |
7 |
Y |
N |
N |
N |
N |
| 46 |
[ |
1 |
Y |
N |
N |
N |
N |
| 47 |
DEFAULT |
7 |
Y |
N |
N |
N |
N |
| 48 |
CHAR |
4 |
Y |
N |
N |
N |
Y |
| 49 |
ORDER |
5 |
Y |
N |
N |
N |
N |
| 50 |
ALTER |
5 |
Y |
N |
N |
N |
N |
| 51 |
PUBLIC |
6 |
Y |
N |
N |
N |
N |
| 52 |
NOT |
3 |
Y |
N |
N |
N |
N |
| 53 |
BETWEEN |
7 |
Y |
N |
N |
N |
N |
| 54 |
IDENTIFIED |
10 |
Y |
N |
N |
N |
N |
| 55 |
VARCHAR |
7 |
Y |
N |
N |
N |
N |
| 56 |
OF |
2 |
Y |
N |
N |
N |
N |
| 57 |
FOR |
3 |
Y |
N |
N |
N |
N |
| 58 |
@ |
1 |
Y |
N |
N |
N |
N |
| 59 |
ANY |
3 |
Y |
N |
N |
N |
N |
| 60 |
INSERT |
6 |
Y |
N |
N |
N |
N |
| 61 |
^ |
1 |
Y |
N |
N |
N |
N |
| 62 |
! |
1 |
Y |
N |
N |
N |
N |
| 63 |
- |
1 |
Y |
N |
N |
N |
N |
| 64 |
DECIMAL |
7 |
Y |
N |
N |
N |
Y |
| 65 |
START |
5 |
Y |
N |
N |
N |
N |
| 66 |
EXCLUSIVE |
9 |
Y |
N |
N |
N |
N |
| 67 |
UPDATE |
6 |
Y |
N |
N |
N |
N |
| 68 |
= |
1 |
Y |
N |
N |
N |
N |
| 69 |
NOWAIT |
6 |
Y |
N |
N |
N |
N |
| 70 |
VIEW |
4 |
Y |
N |
N |
N |
N |
| 71 |
RESOURCE |
8 |
Y |
N |
N |
N |
N |
| 72 |
MODE |
4 |
Y |
N |
N |
N |
N |
| 73 |
] |
1 |
Y |
N |
N |
N |
N |
| 74 |
DATE |
4 |
Y |
N |
N |
N |
N |
| 75 |
NULL |
4 |
Y |
N |
N |
N |
N |
| 76 |
> |
1 |
Y |
N |
N |
N |
N |
| 77 |
& |
1 |
Y |
N |
N |
N |
N |
| 78 |
LOCK |
4 |
Y |
N |
N |
N |
N |
| 79 |
RAW |
3 |
Y |
N |
N |
N |
N |
| 80 |
LIKE |
4 |
Y |
N |
N |
N |
N |
| 81 |
. |
1 |
Y |
N |
N |
N |
N |
| 82 |
OR |
2 |
Y |
N |
N |
N |
N |
| 83 |
, |
1 |
Y |
N |
N |
N |
N |
| 84 |
GRANT |
5 |
Y |
N |
N |
N |
N |
| 85 |
* |
1 |
Y |
N |
N |
N |
N |
| 86 |
INTERSECT |
9 |
Y |
N |
N |
N |
N |
| 87 |
ON |
2 |
Y |
N |
N |
N |
N |
| 88 |
EXISTS |
6 |
Y |
N |
N |
N |
N |
| 89 |
LONG |
4 |
Y |
N |
N |
N |
N |
| 90 |
+ |
1 |
Y |
N |
N |
N |
N |
| 91 |
COMPRESS |
8 |
Y |
N |
N |
N |
N |
| 92 |
INDEX |
5 |
Y |
N |
N |
N |
N |
| 93 |
IS |
2 |
Y |
N |
N |
N |
N |
| 94 |
CREATE |
6 |
Y |
N |
N |
N |
N |
| 95 |
DISTINCT |
8 |
Y |
N |
N |
N |
N |
| 96 |
AND |
3 |
Y |
N |
N |
N |
N |
| 97 |
) |
1 |
Y |
N |
N |
N |
N |
| 98 |
GROUP |
5 |
Y |
N |
N |
N |
N |
| 99 |
: |
1 |
Y |
N |
N |
N |
N |
| 100 |
|
0 |
Y |
N |
N |
N |
N |
|
查询:select * from v$reserved_words where RES_SEMI='Y';结果如下:
| |
KEYWORD |
LENGTH |
RESERVED |
RES_TYPE |
RES_ATTR |
RES_SEMI |
DUPLICATE |
| 1 |
INCREMENT |
9 |
N |
N |
N |
Y |
N |
| 2 |
SYSDATE |
7 |
N |
N |
N |
Y |
N |
| 3 |
ONLINE |
6 |
N |
N |
N |
Y |
N |
| 4 |
VALIDATE |
8 |
N |
N |
N |
Y |
N |
| 5 |
MODIFY |
6 |
N |
N |
N |
Y |
N |
| 6 |
MAXEXTENTS |
10 |
N |
N |
N |
Y |
N |
| 7 |
UID |
3 |
N |
N |
N |
Y |
N |
| 8 |
USER |
4 |
N |
N |
N |
Y |
N |
| 9 |
ROW |
3 |
N |
N |
N |
Y |
N |
| 10 |
ROWS |
4 |
N |
N |
N |
Y |
N |
| 11 |
SUCCESSFUL |
10 |
N |
N |
N |
Y |
N |
| 12 |
IMMEDIATE |
9 |
N |
N |
N |
Y |
N |
| 13 |
MLSLABEL |
8 |
N |
N |
N |
Y |
N |
| 14 |
COLUMN |
6 |
N |
N |
N |
Y |
N |
| 15 |
INITIAL |
7 |
N |
N |
N |
Y |
N |
| 16 |
ROWNUM |
6 |
N |
N |
N |
Y |
N |
| 17 |
OFFLINE |
7 |
N |
N |
N |
Y |
N |
| 18 |
WHENEVER |
8 |
N |
N |
N |
Y |
N |
| 19 |
CURRENT |
7 |
N |
N |
N |
Y |
N |
| 20 |
SESSION |
7 |
N |
N |
N |
Y |
N |
| 21 |
PRIVILEGES |
10 |
N |
N |
N |
Y |
N |
| 22 |
NOAUDIT |
7 |
N |
N |
N |
Y |
N |
| 23 |
LEVEL |
5 |
N |
N |
N |
Y |
N |
| 24 |
ACCESS |
6 |
N |
N |
N |
Y |
N |
| 25 |
AUDIT |
5 |
N |
N |
N |
Y |
N |
| 26 |
ADD |
3 |
N |
N |
N |
Y |
N |
| 27 |
FILE |
4 |
N |
N |
N |
Y |
N |
| 28 |
COMMENT |
7 |
N |
N |
N |
Y |
N |
| 29 |
ROWID |
5 |
N |
N |
N |
Y |
N |
|
测试如下代码:
create table MY_BOX
(
ID NUMBER(10) not null,
COLUMNS NUMBER(5),
Rows NUMBER(5)
)
Rows报错,查询







可以看出ID、COLUMNS、ROWS、NUMBER、TYPE都是关键字,但是NUMBER是保留字,ROWS特定条件下不能做标识符。
参考文档:
http://air-house.iteye.com/blog/868118
http://blog.sina.com.cn/s/blog_6d6e54f70100tsdw.html
http://database.ctocio.com.cn/tips/210/8033210.shtml
http://yr512656630.iteye.com/blog/1578905