2

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

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

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

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

4

1 回答 1

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;
于 2013-02-22T16:29:46.277 回答