我们有一组 45 个表,它们带有一个公共列 { variety
}。需要为所有此类列设置默认值 { comedy
}。
这ALTER TABLE (SCHEMA.TABLE_NAME) MODIFY(VARIETY DEFAULT 'COMEDY')
会完成它,但我想知道是否有一种方法可以在 Oracle 11g 中创建一个 sql 脚本,它将模式中具有通用列名称的所有表更改为通用默认值。
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;
使用交替引用机制,alter table 语句可以编写如下。
'alter table ' || x.table_name || q'[ modify (variety default 'COMEDY')]'