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

du7egjpx  于 2023-05-06  发布在  Oracle
关注(0)|答案(3)|浏览(154)

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

ALTER TABLE table_name
RENAME COLUMN old_name TO new_name;

我阅读了Oracle文档,一次无法得到许多列的答案。
参考:https://docs.oracle.com/javadb/10.6.2.1/ref/rrefsqljrenamecolumnstatement.html

wfauudbj

wfauudbj1#

从Oracle 18c开始,不可能在一个命令中重命名多个表列。
Oracle 18c SQL语言参考包含下图,用于说明ALTER TABLE命令的RENAME_COLUMN_CLAUSE如何工作。不幸的是,除了重命名之外,几乎每个列属性都可以分组修改。

o2g1uqev

o2g1uqev2#

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

iqjalb3h3#

ALTER TABLE table_name
RENAME COLUMN old_column_name1 TO new_column_name1,
RENAME COLUMN old_column_name2 TO new_column_name2,
...,
RENAME COLUMN old_column_nameN TO new_column_nameN;

相关问题