使用select语句重命名表的PL / SQL脚本

时间:2013-02-22 16:16:13

标签: oracle plsql alter-table

嘿所有我的任务是编写一个脚本来重命名表。虽然这听起来很容易,但还有一些其他的事情要记住。有一个表包含所有其他需要更改名称的表。表格中的东西由3列组成,第一列是未分区的nm,第二列是originalnm,第三列是partitionedtablenm。有人告诉我使用select语句来选择两个表,然后使用这些表来改变名称。这就是我到目前为止所做的:

declare
begin
  execute immediate 'select unpartitiontablenm "table1", originaltablenm "table2"
                     from tabletransformation                     
                     alter table table1
                     rename to table2';
end;

现在我尝试向他发送其他方法来执行此操作,例如重命名参数和一个简单的脚本,以接受他想要重命名的两个表,但是所有他不想要的表。也许我只是不明白为什么这种方式更好但是哦,当你需要薪水时你能做什么呢?无论如何,我需要一些帮助才能准确理解他希望我做什么,以及我离它有多远。提前谢谢。

我理解上面的代码是错误的,但它可能会让你更好地理解他是如何描述的。

1 个答案:

答案 0 :(得分:3)

听起来你想要像

这样的东西
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;