最近用到的,在新建表、列的时候需要过滤掉oracle的保留字。
oracle保留字
select keyword from v$reserved_words
不能用作标示符的保留字
select keyword from v$reserved_words where reserved = 'Y'
强制使用保留字需使用双引号,如
create table "number" (x int);
v$reserved_words的定义如下
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. |
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. |
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. |
select WMSYS.WM_CONCAT(''''||keyword||'''') from (
select keyword from v$reserved_words where reserved = 'Y' order by keyword)
'!','&','(',')','*','+',',','-','.','/',':','<','=','>','@','ALL','ALTER','AND','ANY','AS','ASC','BETWEEN','BY','CHAR','CHECK','CLUSTER','COMPRESS','CONNECT','CREATE','DATE','DECIMAL','DEFAULT','DELETE','DESC','DISTINCT','DROP','ELSE','EXCLUSIVE','EXISTS','FLOAT','FOR','FROM','GRANT','GROUP','HAVING','IDENTIFIED','IN','INDEX','INSERT','INTEGER','INTERSECT','INTO','IS','LIKE','LOCK','LONG','MINUS','MODE','NOCOMPRESS','NOT','NOWAIT','NULL','NUMBER','OF','ON','OPTION','OR','ORDER','PCTFREE','PRIOR','PUBLIC','RAW','RENAME','RESOURCE','REVOKE','SELECT','SET','SHARE','SIZE','SMALLINT','START','SYNONYM','TABLE','THEN','TO','TRIGGER','UNION','UNIQUE','UPDATE','VALUES','VARCHAR','VARCHAR2','VIEW','WHERE','WITH','[',']','^','|',''