2013-03-09 18 views
1

我們有一組45個表,它們攜帶一個共同的列{variety}。 需要將所有這樣的列設置爲默認值{comedy}。有沒有辦法改變很多表來將默認值添加到常用列名稱?

ALTER TABLE (SCHEMA.TABLE_NAME) MODIFY(VARIETY DEFAULT 'COMEDY')

將完成它,但我不知道是否有一種方式來創建在Oracle 11g中SQL腳本,將改變其有一個共同的coloumn名共同默認的架構中的所有表值。

+0

您可以遍歷user_tables和user_columns來構建執行立即語句,並且可以隨時運行它,無論表中是否存在需要的列。如果架構不是您運行該查詢的架構,則需要all_tables和all_columns的權限,然後使用這兩個表。 – Sebas 2013-03-09 18:46:12

回答

2
DECLARE 
    cnt NUMBER; 
BEGIN 
    FOR x IN (
     SELECT DISTINCT t.table_name 
     FROM user_tables t 
      INNER JOIN user_tab_columns c ON c.table_name = t.table_name 
    ) LOOP 
     EXECUTE IMMEDIATE 'ALTER TABLE (SCHEMA.' || x.table_name || ') MODIFY(VARIETY DEFAULT ''COMEDY'')'; 
    END LOOP; 
END; 
+0

謝謝。我得到的ORA-06550'遇到選擇當期待一個以下( - +案例國防部<標識符>等..看起來像第一個選擇是不是在這一點上預期.......... ............................... – 2013-03-09 19:36:59

+0

試着用我添加的圓括號(對不起,我沒有環境試用)還加了列過濾器 – Sebas 2013-03-09 19:40:29

+0

是的,我知道了......非常感謝你!! – 2013-03-09 19:42:46

相關問題