如何使用一个Alter Table语句重命名oracle中的多列?

时间:2019-04-18 16:51:37

标签: oracle plsql ddl alter

我发现的唯一一件事是一次重命名一列:

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 个答案:

答案 0 :(得分:2)

从Oracle 18c开始,不可能在单个命令中重命名多个表列。

Oracle 18c SQL Language Reference包含下图,以说明RENAME_COLUMN_CLAUSE命令的ALTER TABLE的工作方式。不幸的是,除重命名外,几乎每个列属性都可以按组进行修改。

enter image description here

答案 1 :(得分:0)

您可以将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;