这需要在sql plus中完成。
嗨,我正在努力重命名表中的两列。他们被命名为" TYPE"和" LEVEL"。
这需要在sql plus中完成,没有例外。
以下不起作用(在sql developer tho中工作):
alter table client rename column level to clevel;
alter table client rename column "level" to clevel;
答案 0 :(得分:2)
LEVEL 是Oracle 关键字,但不是保留。如果要将其用作对象名称,则只要引用该对象,就需要使用双引号来表示带有带引号的标识符的对象的名称。< / p>
SQL> SELECT keyword, reserved FROM V$RESERVED_WORDS WHERE keyword='LEVEL';
KEYWORD R
------------------------------ -
LEVEL N
SQL>
如果您使用关键字LEVEL作为非引用标识符,这就是原因,它会引发错误:
SQL> CREATE TABLE t(level NUMBER);
CREATE TABLE t(level NUMBER)
*
ERROR at line 1:
ORA-00904: : invalid identifier
现在,根据Database Object Names and Qualifiers的文档,如果使用双引号创建对象,它将变为区分大小写,并且必须始终以相同的方式使用对象被引用的位置
例如,
SQL> CREATE TABLE t1("level" NUMBER);
Table created.
SQL>
SQL> ALTER TABLE t1 RENAME COLUMN "level" to clevel;
Table altered.
SQL>
SQL> CREATE TABLE t2("LEVEL" NUMBER);
Table created.
SQL>
SQL> ALTER TABLE t2 RENAME COLUMN "LEVEL" to clevel;
Table altered.
SQL>
最好不要使用关键字,并给出正确的命名约定。
SQL> CREATE TABLE t(clevel NUMBER);
Table created.
SQL>
答案 1 :(得分:0)