Oracle 重命名具有选定值的列

Oracle rename a column with a selected value

我需要重命名一个 table 列,给它一个从另一个 table 中选择的新名称,就像这样(我使用了一个假代码让你理解):

Alter table CUSTOMERS
Rename column OCCUPATION to (select ITA_NAME from TAGS where ENG_NAME = 'occupation')

可以吗?

这似乎不是一个明智的事情,但你可以使用动态 SQL

declare
  l_new_column_name varchar2(30);
begin
  select ITA_NAME 
    into l_new_column_name
    from TAGS 
   where ENG_NAME = 'occupation';

  execute immediate 'Alter table CUSTOMERS ' ||
                    '  Rename column OCCUPATION to ' || l_new_column_name;
end;

请注意,此代码无法防止 SQL 注入攻击。您可能希望至少使用 dbms_assert 包来确保 l_new_column_name 不包含任何恶意内容。