user_procedures与user_objects的问题

    分别执行下面两条语句:
select o.* from user_objects o where o.object_type='PROCEDURE';
select * from user_procedures ;
会发现两条sql执行后的结果不一样,记录条数也不一样,为什么呢?
原因是user_procedures视图中只包含编译通过的存储过程和函数,而user_objects o where o.object_type='PROCEDURE'包含所有的存储过程(包含编译不通过的)。

select *
  from user_procedures p
 where not exists (select 1
          from user_objects uo
         where uo.OBJECT_TYPE = 'PROCEDURE'
           and uo.OBJECT_NAME = p.object_name)
 
select *
  from user_objects p
 where p.OBJECT_TYPE = 'PROCEDURE' and not exists (select 1
          from user_procedures uo
         where uo.OBJECT_NAME = p.object_name)
请使用浏览器的分享功能分享到微信等