数据库下有多个用户,其中一个用户为jfkg,在这个用户下创建了一个存储过程,创建语句如下CREATE OR REPLACE procedure P_CREATE_POSITION is结果存储过程创建在了sys用户下,如果在创建语句前加用户名,如下CREATE OR REPLACE procedure jfkg.P_CREATE_POSITION is提示编译错误warning:complied but with compilation errors这个问题是否与权限有关,请解答时尽量说详细点

解决方案 »

  1.   

    登陆数据库不要用conn jfkg/pw as sysdba,这样登陆的是sys用户,不是jfkg。
    sqlplus下执行show user 查看当前用户是谁。可以明确的是:你不加前缀的创建procedure ,如果procedure是在sys下,那么你登陆的用户肯定是sys。
      

  2.   

    你是用system/manager登录的,那么你要连接到 conn jfkg/密码或者直接用jfkg/密码登录
      

  3.   

    还有一个问题,存储过程中如果要用当前用户下的表,还需要加用户,如在jfkg用户下使用jfkg的表pub_organ,需要这样写才行:jfkg.pub_organ,不然报表或视图找不到的错。
      

  4.   

    确实是这个问题,用户登录时as sysdba了,呵呵,没注意到
      

  5.   

    确实是这个问题,用户登录时as sysdba了,呵呵,没注意到