我必须删除许多表中存在的相同列。例如名称为'c'的列出现在许多表中..t1,t2,t3 ......
一种解决方案是编写尽可能多的ALTER
语句来删除列,作为具有该列的表的数量。
有什么方法可以使用单个ALTER
表语句来做同样的事情。
答案 0 :(得分:3)
没有。 ALTER TABLE
语句一次不能更改多个表。您可以根据ALL_TAB_COLS
编写一些动态SQL,例如
SELECT 'ALTER TABLE ' || owner || '.' || table_name || ' DROP COLUMN '|| column_name || ';'
FROM all_tab_columns
WHERE column_name = 'MY_UNWANTED_COLUMN'
AND owner = 'MY_OWNER'
/
然后运行该脚本。您可能想要添加
AND table_name IN ('MY_TAB1','MY_TAB2')
指定一个精确的表列表,以获得额外的心情。