您的位置:首页 > 数据库 > Oracle

Know Difference between Oracle Reserved Words and Keywords

2013-03-19 00:47 441 查看
与C和JAVA体系类似,Oracle中存在一些保留词(Reserved Words)或关键词(Keywords)以及少量的命名空间(Namespace)。

保留词(Reserved Words)是优先级最高的词汇,在Oracle中这些词都有着特殊的意义。所以这些词不允许被重定义 (redefine),换而言之就不是不允许用作对象的名字。以下为Oracle 10g中保留词的列表:
Oracle Reserved Words
ACCESSELSEMODIFYSTART
ADDEXCLUSIVENOAUDITSELECT
ALLEXISTSNOCOMPRESSSESSION
ALTERFILENOTSET
ANDFLOATNOTFOUNDSHARE
ANYFORNOWAITSIZE
ARRAYLENFROMNULLSMALLINT
ASGRANTNUMBERSQLBUF
ASCGROUPOFSUCCESSFUL
AUDITHAVINGOFFLINESYNONYM
BETWEENIDENTIFIEDONSYSDATE
BYIMMEDIATEONLINETABLE
CHARINOPTIONTHEN
CHECKINCREMENTORTO
CLUSTERINDEXORDERTRIGGER
COLUMNINITIALPCTFREEUID
COMMENTINSERTPRIORUNION
COMPRESSINTEGERPRIVILEGESUNIQUE
CONNECTINTERSECTPUBLICUPDATE
CREATEINTORAWUSER
CURRENTISRENAMEVALIDATE
DATELEVELRESOURCEVALUES
DECIMALLIKEREVOKEVARCHAR
DEFAULTLOCKROWVARCHAR2
DELETELONGROWIDVIEW
DESCMAXEXTENTSROWLABELWHENEVER
DISTINCTMINUSROWNUMWHERE
DROPMODEROWSWITH
注意虽然我们不能直接将保留词用于对象名,但还是可以通过特殊手段来完成这种不推荐的定义目的,如:
如上表所列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
ADMINCURSORFOUNDMOUNT
AFTERCYCLEFUNCTIONNEXT
ALLOCATEDATABASEGONEW
ANALYZEDATAFILEGOTONOARCHIVELOG
ARCHIVEDBAGROUPSNOCACHE
ARCHIVELOGDECINCLUDINGNOCYCLE
AUTHORIZATIONDECLAREINDICATORNOMAXVALUE
AVGDISABLEINITRANSNOMINVALUE
BACKUPDISMOUNTINSTANCENONE
BEGINDOUBLEINTNOORDER
BECOMEDUMPKEYNORESETLOGS
BEFOREEACHLANGUAGENORMAL
BLOCKENABLELAYERNOSORT
BODYENDLINKNUMERIC
CACHEESCAPELISTSOFF
CANCELEVENTSLOGFILEOLD
CASCADEEXCEPTMANAGEONLY
CHANGEEXCEPTIONSMANUALOPEN
CHARACTEREXECMAXOPTIMAL
CHECKPOINTEXPLAINMAXDATAFILESOWN
CLOSEEXECUTEMAXINSTANCESPACKAGE
COBOLEXTENTMAXLOGFILESPARALLEL
COMMITEXTERNALLYMAXLOGHISTORYPCTINCREASE
COMPILEFETCHMAXLOGMEMBERSPCTUSED
CONSTRAINTFLUSHMAXTRANSPLAN
CONSTRAINTSFREELISTMAXVALUEPLI
CONTENTSFREELISTSMINPRECISION
CONTINUEFORCEMINEXTENTSPRIMARY
CONTROLFILEFOREIGNMINVALUEPRIVATE
COUNTFORTRANMODULEPROCEDURE
PROFILESAVEPOINTSQLSTATETRACING
QUOTASCHEMASTATEMENT_IDTRANSACTION
READSCNSTATISTICSTRIGGERS
REALSECTIONSTOPTRUNCATE
RECOVERSEGMENTSTORAGEUNDER
REFERENCESSEQUENCESUMUNLIMITED
REFERENCINGSHAREDSWITCHUNTIL
RESETLOGSSNAPSHOTSYSTEMUSE
RESTRICTEDSOMETABLESUSING
REUSESORTTABLESPACEWHEN
ROLESQLTEMPORARYWRITE
ROLESSQLCODETHREADWORK
ROLLBACKSQLERRORTIME
Pl/SQL中还有部分的保留词(PL/SQL Reserved Words),在嵌入SQL语句需要对这些词汇特殊处理。
PL/SQL Reserved Words
ABORTBETWEENCRASHDIGITS
ACCEPTBINARY_INTEGERCREATEDISPOSE
ACCESSBODYCURRENTDISTINCT
ADDBOOLEANCURRVALDO
ALLBYCURSORDROP
ALTERCASEDATABASEELSE
ANDCHARDATA_BASEELSIF
ANYCHAR_BASEDATEEND
ARRAYCHECKDBAENTRY
ARRAYLENCLOSEDEBUGOFFEXCEPTION
ASCLUSTERDEBUGONEXCEPTION_INIT
ASCCLUSTERSDECLAREEXISTS
ASSERTCOLAUTHDECIMALEXIT
ASSIGNCOLUMNSDEFAULTFALSE
ATCOMMITDEFINITIONFETCH
AUTHORIZATIONCOMPRESSDELAYFLOAT
AVGCONNECTDELETEFOR
BASE_TABLECONSTANTDELTAFORM
BEGINCOUNTDESCFROM
FUNCTIONNEWRELEASESUM
GENERICNEXTVALREMRTABAUTH
GOTONOCOMPRESSRENAMETABLE
GRANTNOTRESOURCETABLES
GROUPNULLRETURNTASK
HAVINGNUMBERREVERSETERMINATE
IDENTIFIEDNUMBER_BASEREVOKETHEN
IFOFROLLBACKTO
INONROWIDTRUE
INDEXOPENROWLABELTYPE
INDEXESOPTIONROWNUMUNION
INDICATORORROWTYPEUNIQUE
INSERTORDERRUNUPDATE
INTEGEROTHERSSAVEPOINTUSE
INTERSECTOUTSCHEMAVALUES
INTOPACKAGESELECTVARCHAR
ISPARTITIONSEPARATEVARCHAR2
LEVELPCTFREESETVARIANCE
LIKEPOSITIVESIZEVIEW
LIMITEDPRAGMASMALLINTVIEWS
LOOPPRIORSPACEWHEN
MAXPRIVATESQLWHERE
MINPROCEDURESQLCODEWHILE
MINUSPUBLICSQLERRMWITH
MLSLABELRAISESTARTWORK
MODRANGESTATEMENTXOR
MODEREALSTDDEV
NATURALRECORDSUBTYPE
除去保留词和关键词外,Oracle内部还存在一张命名空间(namespace)的列表,这些命名空间或为OCI函数或为Oracle内部函数作为函数的起始字符,如SQL*NET透明网络服务相关函数都以"NS"为函数名的开头,Oracle不推荐使用用户函数使用这些保留的命名空间为开头,以避免潜在的冲突可能。

Oracle Reserved Namespaces
NamespaceLibrary
OOCI functions
Sfunction names from SQLLIB and system-dependent libraries
XAexternal functions for XA applications only
GEN KP L NA NC ND NL NM NR NS NT NZ TTC UPIInternal functions
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: