技术标签:
【中文标题】删除 Oracle 模式中的所有视图【英文标题】:Drop All Views in an Oracle Schema 【发布时间】:2015-06-30 21:52:50 【问题描述】:我想要一个查询来删除我的 oracle 架构中的所有视图。我知道这不是正确的语法(或者我不会问),但我想要的想法如下:
DROP VIEW (SELECT view_name FROM user_views);
【问题讨论】:
您需要一个查询吗?是否有不能使用小的匿名 PL/SQL 块的原因? 没有原因,只是学术兴趣。 【参考方案1】:我分解并使用了如下所示的 PL/SQL 块:
begin for i in (select view_name from user_views) loop execute immediate "drop view " || i.view_name; end loop; end;
如果有人知道单个查询解决方案,我仍然会很好奇。
【讨论】:
【参考方案2】:您可以使用此查询来生成您需要运行的语句(然后运行这些语句):
select "drop view "||view_name||";" as statementsfrom all_viewswhere owner = "YOUR_SCHEMA_NAME"
请注意不要无意中删除了架构中可能由您以外的其他人创建并且您可能需要的任何视图(如果在您的特定情况下可能这样做的话)。例如,如果您使用 Oracle Data Miner,它会在您创建工作流等时在您的架构中存储许多对象。
【讨论】:
那么select "drop view "||view_name||";" as statements from user_views;
不行吗?以上是关于删除 Oracle 模式中的所有视图的主要内容,如果未能解决你的问题,请参考以下文章