Переименовать столбец с именем TYPE, LEVEL в sqlplus

Это нужно сделать в sql plus.

Привет, я изо всех сил пытаюсь переименовать две колонки в таблице. Они называются «ТИП» и «УРОВЕНЬ».

Это необходимо сделать в sql plus без исключения.

Не работает (работает в sql developer tho):

alter table client rename column level to clevel; alter table client rename column "level" to clevel; 

LEVELключевое слово Oracle, хотя и не зарезервировано. Если вы хотите использовать его как имя объекта, вам необходимо указать имя объекта с указанным идентификатором, используя двойные кавычки, когда вы ссылаетесь на этот объект.

 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 

Теперь, в соответствии с документацией об именах и классификаторах объектов базы данных , если вы создаете объект с использованием двойных кавычек, он становится чувствительным к регистру и всегда должен использоваться одинаково везде, где объект ссылается.

Например,

 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> 

Вы также можете выполнить sql-скрипты в sqlplus. Просто сохраните инструкцию в файле, а затем используйте следующую команду:

 @{file-path} 

См. Также эту ссылку