不是不能用别的模式下的表,而是因为ORACLE不允许在过程中使用未经显式授权的对象.
对象授权有两种模式,显式和隐式:
显式授权是直接用GRANT语句进行授权,如:
CONN USER1
GRANT SELECT ON TABLE1 TO USER2;
而隐式授权则是通过ROLE来授权,如:
CONN USER1
GRANT SELECT ON TABLE1 TO ROLE1;
CONN SYSTEM
GRANT ROLE1 TO USER2;SYSTEM拥有SELECT ALL TABLE但是并没有被显式地授权访问该对象.所以你要做的就是:
CONN DOCMAN
GRANT SELECT ON STAFFINFO TO USERxxx;

解决方案 »

  1.   

    不是不能用别的模式下的表,而是因为ORACLE不允许在过程中使用未经显式授权的对象.
    对象授权有两种模式,显式和隐式:
    显式授权是直接用GRANT语句进行授权,如:
    CONN USER1
    GRANT SELECT ON TABLE1 TO USER2;
    而隐式授权则是通过ROLE来授权,如:
    CONN USER1
    GRANT SELECT ON TABLE1 TO ROLE1;
    CONN SYSTEM
    GRANT ROLE1 TO USER2;SYSTEM拥有SELECT ALL TABLE但是并没有被显式地授权访问该对象.所以你要做的就是:
    CONN DOCMAN
    GRANT SELECT ON STAFFINFO TO USERxxx;
      

  2.   

    不是不能用别的模式下的表,而是因为ORACLE不允许在过程中使用未经显式授权的对象.
    对象授权有两种模式,显式和隐式:
    显式授权是直接用GRANT语句进行授权,如:
    CONN USER1
    GRANT SELECT ON TABLE1 TO USER2;
    而隐式授权则是通过ROLE来授权,如:
    CONN USER1
    GRANT SELECT ON TABLE1 TO ROLE1;
    CONN SYSTEM
    GRANT ROLE1 TO USER2;SYSTEM拥有SELECT ALL TABLE但是并没有被显式地授权访问该对象.所以你要做的就是:
    CONN DOCMAN
    GRANT SELECT ON STAFFINFO TO USERxxx;