两个用户, 分别为 user_a   user_b.
     
     user_a 中,包 pack_a 下面有存储过程 pro_a      在user_b中表tab_a的触发器中需要调用 user_a的存储过程pro_a      请问如何授权?  多谢.

解决方案 »

  1.   

    在a用户下执行grant execute on  pack_a.pro_a   to user_b
      

  2.   


    “在水一方” 竟然和我女朋友的一样.   上面的写法不行哦。 报错: ORA-04042:过程,函数,程序包或者程序包体不存在
      

  3.   

    grant execute on user_a.pro_a   to user_b
    grant execute on user_a.pack_a to user_b
      

  4.   

    只能直接对包授权,不能分别对包下的子过程授权
    grant execute on pack_a to user_b;
      

  5.   

    额,还真是哦.对包grant可以,对包里某个存储过程授权好像不可以
      

  6.   

    SQL> grant execute on pkg_test.proc1 to hr
      2  ;
     
    grant execute on pkg_test.proc1 to hr
     
    ORA-04042: procedure, function, package, or package body does not exist
     
    SQL> grant execute on pkg_test to hr;
     
    Grant succeeded
      

  7.   

    总结一下:5# 一针见血。4# 第一句直接针对存储过程不行,第二句针对包的可以minitoy 你很热心,多谢。
      如果不想用户执行包下面的其他过程,再写个单独的包,只包含这个过程吧.  这个也是解决的方法之一