从Oracle中的多个表中删除相同的列名

时间:2012-09-14 07:21:01

标签: sql oracle

我必须删除许多表中存在的相同列。例如名称为'c'的列出现在许多表中..t1,t2,t3 ......

一种解决方案是编写尽可能多的ALTER语句来删除列,作为具有该列的表的数量。

有什么方法可以使用单个ALTER表语句来做同样的事情。

1 个答案:

答案 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')

指定一个精确的表列表,以获得额外的心情。