嘿所有我的任务是编写一个脚本来重命名表。虽然这听起来很容易,但还有一些其他的事情要记住。有一个表包含所有其他需要更改名称的表。表格中的东西由3列组成,第一列是未分区的nm,第二列是originalnm,第三列是partitionedtablenm。有人告诉我使用select语句来选择两个表,然后使用这些表来改变名称。这就是我到目前为止所做的:
declare
begin
execute immediate 'select unpartitiontablenm "table1", originaltablenm "table2"
from tabletransformation
alter table table1
rename to table2';
end;
现在我尝试向他发送其他方法来执行此操作,例如重命名参数和一个简单的脚本,以接受他想要重命名的两个表,但是所有他不想要的表。也许我只是不明白为什么这种方式更好但是哦,当你需要薪水时你能做什么呢?无论如何,我需要一些帮助才能准确理解他希望我做什么,以及我离它有多远。提前谢谢。
我理解上面的代码是错误的,但它可能会让你更好地理解他是如何描述的。
答案 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;