oracle中统计存储过程,触发器的个数???例如要统一某一个模式下的存储过程或者触发器的个数???在db2中可以 select count(*) from syscat.triggers  where trigschema=''就可以了,用syscat试图,请问oracle中如何统计呢????

解决方案 »

  1.   

    SELECT * FROM user_objects a
    WHERE a.object_type='PROCEDURE'
      

  2.   

    select count(1) from all_objects where object_type='PROCEDURE' AND OWNER=''
      

  3.   

    data dict:
    触发器的视图为 all_triggers,user_triggers,dba_triggers(all,user,dba是oracle data dict的一种区分惯用)
    对于procedure的话,有好些个视图,可以查询不同程度的信息,所以依赖于你实际管理工作的需要而选择不同的
    dba_arguments,dba_procedures,dba_sources(dba替换成all或user,会符合特定owner的过滤条件).另外第一个dba_arguments貌似只能在11g能用,记不清了.
    这些data dict视图本身是可以在dictionary这张视图里查到的.而每个数据字典的字段意思可以从dict_columns里查到,注意,都是英文的.
    所以,如果需要经常管理数据库对象或对这些对象做操作,最好自己去搞个索引或学会运用dictionary和dict_columns.
      

  4.   

    select * from dba_procedures;
    select * from all_procedures;
    select * from user_procedures;
      

  5.   

    SQL code
    select count(1) from all_objects where object_type='PROCEDURE' AND OWNER=''
      

  6.   

    select count(1) from all_objects where object_type='procedures' 
    AND OWNER='USERNAME' ;select count(1) from all_objects where object_type='trigger' 
    AND OWNER='USERNAME' ;
      

  7.   


    --当前用户下的过程数
    select count(*) from user_procedures;
    --当前用户下的触发器数
    select count(*) from user_triggers;