与C和JAVA体系类似,Oracle中存在一些保留词(Reserved Words)或关键词(Keywords)以及少量的命名空间(Namespace)。
保留词(Reserved Words)是优先级最高的词汇,在Oracle中这些词都有着特殊的意义。所以这些词不允许被重定义 (redefine),换而言之就不是不允许用作对象的名字。以下为Oracle 10g中保留词的列表:
Oracle Reserved Words | |||
---|---|---|---|
ACCESS | ELSE | MODIFY | START |
ADD | EXCLUSIVE | NOAUDIT | SELECT |
ALL | EXISTS | NOCOMPRESS | SESSION |
ALTER | FILE | NOT | SET |
AND | FLOAT | NOTFOUND | SHARE |
ANY | FOR | NOWAIT | SIZE |
ARRAYLEN | FROM | NULL | SMALLINT |
AS | GRANT | NUMBER | SQLBUF |
ASC | GROUP | OF | SUCCESSFUL |
AUDIT | HAVING | OFFLINE | SYNONYM |
BETWEEN | IDENTIFIED | ON | SYSDATE |
BY | IMMEDIATE | ONLINE | TABLE |
CHAR | IN | OPTION | THEN |
CHECK | INCREMENT | OR | TO |
CLUSTER | INDEX | ORDER | TRIGGER |
COLUMN | INITIAL | PCTFREE | UID |
COMMENT | INSERT | PRIOR | UNION |
COMPRESS | INTEGER | PRIVILEGES | UNIQUE |
CONNECT | INTERSECT | PUBLIC | UPDATE |
CREATE | INTO | RAW | USER |
CURRENT | IS | RENAME | VALIDATE |
DATE | LEVEL | RESOURCE | VALUES |
DECIMAL | LIKE | REVOKE | VARCHAR |
DEFAULT | LOCK | ROW | VARCHAR2 |
DELETE | LONG | ROWID | VIEW |
DESC | MAXEXTENTS | ROWLABEL | WHENEVER |
DISTINCT | MINUS | ROWNUM | WHERE |
DROP | MODE | ROWS | WITH |
注意虽然我们不能直接将保留词用于对象名,但还是可以通过特殊手段来完成这种不推荐的定义目的,如:
如上表所列START为一个保留词 SQL> CREATE TABLE START (T1 INT); CREATE TABLE START (T1 INT) ORA-00903: invalid table name 利用双引号可以成功将保留词用作对象名,但是在管理时会很麻烦,极力不推荐! SQL> CREATE TABLE "START" (T1 INT); Table created SQL> SELECT * FROM START; SELECT * FROM START ORA-00903: invalid table name SQL> SELECT * FROM "START"; T1 --------------------------------------- SQL> SELECT * FROM "start"; SELECT * FROM "start" ORA-00942: table or view does not exist SQL> select object_name from dba_objects where object_name='START'; OBJECT_NAME -------------------------------------------------------------------------------- START SQL> DROP TABLE "start"; DROP TABLE "start" ORA-00942: table or view does not exist SQL> DROP TABLE "START"; Table dropped
关键词同样是在Oracle中具有特殊意义的词汇,但是其可以用作重定义(redefine)。Oracle文档介绍这些关键词可能在今后的版本中变成保留词。以下为Oracle 10g中关键词的列表:
Oracle Keywords | |||
---|---|---|---|
ADMIN | CURSOR | FOUND | MOUNT |
AFTER | CYCLE | FUNCTION | NEXT |
ALLOCATE | DATABASE | GO | NEW |
ANALYZE | DATAFILE | GOTO | NOARCHIVELOG |
ARCHIVE | DBA | GROUPS | NOCACHE |
ARCHIVELOG | DEC | INCLUDING | NOCYCLE |
AUTHORIZATION | DECLARE | INDICATOR | NOMAXVALUE |
AVG | DISABLE | INITRANS | NOMINVALUE |
BACKUP | DISMOUNT | INSTANCE | NONE |
BEGIN | DOUBLE | INT | NOORDER |
BECOME | DUMP | KEY | NORESETLOGS |
BEFORE | EACH | LANGUAGE | NORMAL |
BLOCK | ENABLE | LAYER | NOSORT |
BODY | END | LINK | NUMERIC |
CACHE | ESCAPE | LISTS | OFF |
CANCEL | EVENTS | LOGFILE | OLD |
CASCADE | EXCEPT | MANAGE | ONLY |
CHANGE | EXCEPTIONS | MANUAL | OPEN |
CHARACTER | EXEC | MAX | OPTIMAL |
CHECKPOINT | EXPLAIN | MAXDATAFILES | OWN |
CLOSE | EXECUTE | MAXINSTANCES | PACKAGE |
COBOL | EXTENT | MAXLOGFILES | PARALLEL |
COMMIT | EXTERNALLY | MAXLOGHISTORY | PCTINCREASE |
COMPILE | FETCH | MAXLOGMEMBERS | PCTUSED |
CONSTRAINT | FLUSH | MAXTRANS | PLAN |
CONSTRAINTS | FREELIST | MAXVALUE | PLI |
CONTENTS | FREELISTS | MIN | PRECISION |
CONTINUE | FORCE | MINEXTENTS | PRIMARY |
CONTROLFILE | FOREIGN | MINVALUE | PRIVATE |
COUNT | FORTRAN | MODULE | PROCEDURE |
PROFILE | SAVEPOINT | SQLSTATE | TRACING |
QUOTA | SCHEMA | STATEMENT_ID | TRANSACTION |
READ | SCN | STATISTICS | TRIGGERS |
REAL | SECTION | STOP | TRUNCATE |
RECOVER | SEGMENT | STORAGE | UNDER |
REFERENCES | SEQUENCE | SUM | UNLIMITED |
REFERENCING | SHARED | SWITCH | UNTIL |
RESETLOGS | SNAPSHOT | SYSTEM | USE |
RESTRICTED | SOME | TABLES | USING |
REUSE | SORT | TABLESPACE | WHEN |
ROLE | SQL | TEMPORARY | WRITE |
ROLES | SQLCODE | THREAD | WORK |
ROLLBACK | SQLERROR | TIME |
Pl/SQL中还有部分的保留词(PL/SQL Reserved Words),在嵌入SQL语句需要对这些词汇特殊处理。
PL/SQL Reserved Words | |||
---|---|---|---|
ABORT | BETWEEN | CRASH | DIGITS |
ACCEPT | BINARY_INTEGER | CREATE | DISPOSE |
ACCESS | BODY | CURRENT | DISTINCT |
ADD | BOOLEAN | CURRVAL | DO |
ALL | BY | CURSOR | DROP |
ALTER | CASE | DATABASE | ELSE |
AND | CHAR | DATA_BASE | ELSIF |
ANY | CHAR_BASE | DATE | END |
ARRAY | CHECK | DBA | ENTRY |
ARRAYLEN | CLOSE | DEBUGOFF | EXCEPTION |
AS | CLUSTER | DEBUGON | EXCEPTION_INIT |
ASC | CLUSTERS | DECLARE | EXISTS |
ASSERT | COLAUTH | DECIMAL | EXIT |
ASSIGN | COLUMNS | DEFAULT | FALSE |
AT | COMMIT | DEFINITION | FETCH |
AUTHORIZATION | COMPRESS | DELAY | FLOAT |
AVG | CONNECT | DELETE | FOR |
BASE_TABLE | CONSTANT | DELTA | FORM |
BEGIN | COUNT | DESC | FROM |
FUNCTION | NEW | RELEASE | SUM |
GENERIC | NEXTVAL | REMR | TABAUTH |
GOTO | NOCOMPRESS | RENAME | TABLE |
GRANT | NOT | RESOURCE | TABLES |
GROUP | NULL | RETURN | TASK |
HAVING | NUMBER | REVERSE | TERMINATE |
IDENTIFIED | NUMBER_BASE | REVOKE | THEN |
IF | OF | ROLLBACK | TO |
IN | ON | ROWID | TRUE |
INDEX | OPEN | ROWLABEL | TYPE |
INDEXES | OPTION | ROWNUM | UNION |
INDICATOR | OR | ROWTYPE | UNIQUE |
INSERT | ORDER | RUN | UPDATE |
INTEGER | OTHERS | SAVEPOINT | USE |
INTERSECT | OUT | SCHEMA | VALUES |
INTO | PACKAGE | SELECT | VARCHAR |
IS | PARTITION | SEPARATE | VARCHAR2 |
LEVEL | PCTFREE | SET | VARIANCE |
LIKE | POSITIVE | SIZE | VIEW |
LIMITED | PRAGMA | SMALLINT | VIEWS |
LOOP | PRIOR | SPACE | WHEN |
MAX | PRIVATE | SQL | WHERE |
MIN | PROCEDURE | SQLCODE | WHILE |
MINUS | PUBLIC | SQLERRM | WITH |
MLSLABEL | RAISE | START | WORK |
MOD | RANGE | STATEMENT | XOR |
MODE | REAL | STDDEV | |
NATURAL | RECORD | SUBTYPE |
除去保留词和关键词外,Oracle内部还存在一张命名空间(namespace)的列表,这些命名空间或为OCI函数或为Oracle内部函数作为函数的起始字符,如SQL*NET透明网络服务相关函数都以”NS”为函数名的开头,Oracle不推荐使用用户函数使用这些保留的命名空间为开头,以避免潜在的冲突可能。
Oracle Reserved Namespaces
Namespace | Library |
---|---|
O | OCI functions |
S | function names from SQLLIB and system-dependent libraries |
XA | external functions for XA applications only |
GEN KP L NA NC ND NL NM NR NS NT NZ TTC UPI | Internal functions |