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
不包含任何恶意内容。
我需要重命名一个 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
不包含任何恶意内容。