我們有一組45個表,它們攜帶一個共同的列{variety
}。 需要將所有這樣的列設置爲默認值{comedy
}。有沒有辦法改變很多表來將默認值添加到常用列名稱?
的ALTER TABLE (SCHEMA.TABLE_NAME) MODIFY(VARIETY DEFAULT 'COMEDY')
將完成它,但我不知道是否有一種方式來創建在Oracle 11g中SQL腳本,將改變其有一個共同的coloumn名共同默認的架構中的所有表值。
我們有一組45個表,它們攜帶一個共同的列{variety
}。 需要將所有這樣的列設置爲默認值{comedy
}。有沒有辦法改變很多表來將默認值添加到常用列名稱?
的ALTER TABLE (SCHEMA.TABLE_NAME) MODIFY(VARIETY DEFAULT 'COMEDY')
將完成它,但我不知道是否有一種方式來創建在Oracle 11g中SQL腳本,將改變其有一個共同的coloumn名共同默認的架構中的所有表值。
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;
謝謝。我得到的ORA-06550'遇到選擇當期待一個以下( - +案例國防部<標識符>等..看起來像第一個選擇是不是在這一點上預期.......... ............................... – 2013-03-09 19:36:59
試着用我添加的圓括號(對不起,我沒有環境試用)還加了列過濾器 – Sebas 2013-03-09 19:40:29
是的,我知道了......非常感謝你!! – 2013-03-09 19:42:46
您可以遍歷user_tables和user_columns來構建執行立即語句,並且可以隨時運行它,無論表中是否存在需要的列。如果架構不是您運行該查詢的架構,則需要all_tables和all_columns的權限,然後使用這兩個表。 – Sebas 2013-03-09 18:46:12