2013-02-22 75 views
2

嘿,我的任務是編寫一個腳本來重命名錶。雖然這聽起來很容易,但還有其他一些事情需要記住。有一個表格,其中包含所有其他需要更改名稱的表格。表中各行由3列組成,第一列爲未分區,第二列爲原始納米,第三列爲可分區表。我被告知使用select語句來選擇兩個表,然後使用這些表來更改名稱。這是我到目前爲止有:使用select語句重命名錶的PL/SQL腳本

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

現在我試圖把他送到其他方法可以做到這一點,如重命名參數,只是一個簡單的腳本來接受這兩個表,他想重新命名,但所有這些他不想要。也許我只是不明白爲什麼這種方式更好,但哦,當你需要薪水時你可以做什麼。無論如何,我需要一些幫助,準確理解他希望我做什麼以及離我有多遠。提前致謝。

我明白上面的代碼是錯誤的,但它可能會讓你更好地理解他如何向我描述它。

回答

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; 
+0

咦,我從來沒有想過這個問題。他總是提到一次只能做一張桌子,但也許這只是一個錯誤的交流。感謝您指點我正確的方向。 – 2013-02-22 16:38:53

+0

@AdamHalegua - 請注意,它一次只能處理一個表。 – 2013-02-22 16:58:51

+0

謝謝賈斯汀,但我發現他真的想要這樣的: 'select'rename table'|| unpartitiontablenm ||'從'tabletransformation'到'|| || || || || || |||這是我們的溝通不暢。 – 2013-02-22 18:32:04