各位大侠,oracle触发器能否获取当前更改表的package、procedure、获取function的名称?
谢谢啦!

解决方案 »

  1.   

    各位大侠,oracle触发器能否获取当前更改表的package、procedure、或者function的名称?
    谢谢啦!
      

  2.   


    --可以的,从v$session中去取,你说的信息应该都有的
    select * from v$session where audsid=userenv('sessionid');
      

  3.   

    SELECT * FROM All_Source t WHERE upper(t.text) LIKE upper('%表名%') 
      

  4.   

    SELECT * FROM All_Source t WHERE upper(t.text) LIKE upper('%表名%') 
      

  5.   

    select * from v$session where audsid=userenv('sessionid');
    找出sid,然后
    SELECT OBJECT                  FROM v$access
                     WHERE SID = v_sid
                       AND (   TYPE = 'PACKAGE'
                            OR TYPE = 'PROCEDURE'
                            OR TYPE = 'FUNCTION'
                           )
                       AND owner = 'USER'
      

  6.   

    多谢指点,但是把所有调用过程的函数、过程及包都查出来啦,能不能只把发生更改的那一个找出来呢。
    另外,执行
    SELECT OBJECT FROM v$access
      WHERE SID = v_sid
      AND ( TYPE = 'PACKAGE'
      OR TYPE = 'PROCEDURE'
      OR TYPE = 'FUNCTION'
      )
      AND owner = 'USER'
    速度好慢啊,为啥呢?
      

  7.   

    SELECT * FROM All_Source t WHERE upper(t.text) LIKE upper('%表名%')