Oracle 使用select语句重命名表的PL/SQL脚本
嘿,我的任务是写一个脚本来重命名表。尽管这听起来很容易,但还有一些事情需要记住。有一个表包含需要更改名称的所有其他表。表中的某些行由3列组成,第一列是UnparationedNM,第二列是originalnm,第三列是partitionedtablenm。我被告知使用select语句选择两个表,然后使用这些表更改名称。这就是我到目前为止所做的:Oracle 使用select语句重命名表的PL/SQL脚本,oracle,plsql,alter-table,Oracle,Plsql,Alter Table,嘿,我的任务是写一个脚本来重命名表。尽管这听起来很容易,但还有一些事情需要记住。有一个表包含需要更改名称的所有其他表。表中的某些行由3列组成,第一列是UnparationedNM,第二列是originalnm,第三列是partitionedtablenm。我被告知使用select语句选择两个表,然后使用这些表更改名称。这就是我到目前为止所做的: declare begin execute immediate 'select unpartitiontablenm "table1", origi
declare
begin
execute immediate 'select unpartitiontablenm "table1", originaltablenm "table2"
from tabletransformation
alter table table1
rename to table2';
end;
现在我试着向他发送其他方法来实现这一点,比如重命名参数和一个简单的脚本来接受他想要重命名但他不想要的两个表。也许我只是不明白为什么这种方式更好,但是哦,好吧,当你需要薪水的时候,你能做什么呢。无论如何,我需要一些帮助,确切地了解他希望我做什么,以及我离这有多远。提前谢谢
我知道上面的代码是错误的,但它可能会让你更好地理解他是如何向我描述的。听起来你想要类似的东西
DECLARE
l_sql_stmt VARCHAR2(4000);
BEGIN
FOR i IN (SELECT unpartitiontablenm, originaltablenm
FROM tableTransformation)
LOOP
l_sql_stmt := 'ALTER TABLE ' || i.unpartitiontablenm||
' RENAME TO ' || i.originaltablenm ;
EXECUTE IMMEDIATE l_sql_stmt;
END LOOP;
END;
嗯,我从没想过。他总是提到一次只做一张桌子,但也许这只是沟通失误。谢谢你给我指出了正确的方向。@AdamHalegua-请注意,
一次只改变一个表。谢谢Justin,但我发现他确实想要这个:选择“重命名表”| | | | |到“| |从表转换的原始表名”这是我们的沟通失误。