暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 删除多个过程和枢轴子查询

askTom 2017-04-11
170

问题描述

1) 我想一次删除10个过程?是否可以通过单个drop命令或其他任何方式来做到这一点?

2) 我们可以对 “透视条款” 使用子查询吗?
我在google上搜索了一下,可以使用 'pivot xml' 来完成此操作,但是输出将采用xml格式,这并不能解决我的目的。还有其他方法可以做到这一点吗?

3) 我们可以一次删除10个程序吗?(面试问题)


专家解答

1.你的意思是在一个单一的drop命令?没有。

create or replace procedure p1 is
begin
 null;
end p1;
/
      
create or replace procedure p2 is
begin
 null;
end p2;
/

drop procedure p1, p2;

SQL Error: ORA-00933: SQL command not properly ended
复制


虽然也许你可以争辩说,如果你在一个包中有10个程序,然后删除它,你会同时删除10个程序...

2.没有。

with rws as (
  select mod(rownum, 10) x from dual connect by level <= 1000
)
  select * from rws
  pivot (count(*) for x in (select 1 from dual));

SQL Error: ORA-00936: missing expression
复制


如果你想从查询生成列表,你可以:

-编写查询以生成您的值。然后使用动态SQL将此列表传递给pivot
-使用可以 “透视查询” 的自定义类型。

有关这些的更多信息,请滚动到以下内容的 “动态列列表” 部分:

https://blogs.oracle.com/sql/how-to-convert-rows-to-columns-and-back-again-with-sql-aka-pivot-and-unpivot

3.这与q1有何不同?
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论