我必须删除许多表中存在的同一列。例如,名称为“c”的列存在于许多表中……t1、t2、t3……
一种解决方案是编写与ALTER
包含该列的表的数量一样多的语句来删除列。
有什么方法可以让我使用单ALTER
表语句做同样的事情。
不可以。一条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')
指定一个确切的表格列表,以备不时之需。