Как переименовать несколько столбцов в оракуле, используя один оператор таблицы Alter? - PullRequest
1 голос
/ 18 апреля 2019

Единственное, что я нашел, это переименование одного столбца за раз:

ALTER TABLE table_name
RENAME COLUMN old_name TO new_name;

Я прочитал документацию Oracle и не смог получить ответ по многим столбцам одновременно.

Ссылка: https://docs.oracle.com/javadb/10.6.2.1/ref/rrefsqljrenamecolumnstatement.html

Ответы [ 2 ]

2 голосов
/ 19 апреля 2019

Невозможно переименовать несколько столбцов таблицы в одной команде, начиная с Oracle 18c.

Справочник по языку Oracle 18c включает в себя диаграмму ниже, чтобы проиллюстрировать, как RENAME_COLUMN_CLAUSE команды ALTER TABLE работает.К сожалению, почти каждое свойство столбца может быть изменено в группах, кроме переименования.

enter image description here

0 голосов
/ 18 апреля 2019

Вы можете использовать user_tab_columns представление словаря в качестве источника данных внутри курсора для оператора цикла

declare
  v_table_name varchar2(40):='mytable';
begin
  for c in ( select from user_tab_columns where table_name = upper(v_table_name) )
  loop
    execute immediate ('ALTER TABLE '||c.table_name||' RENAME COLUMN '||c.column_name
                                                   ||' TO new_'||c.column_name);
  end loop;
end;
...