当我通过Oracle中的公共同义词调用包时,得到了pls-00201

时间:2012-10-10 16:43:39

标签: oracle package synonym

我在sys中创建了一个名为sf_timer的包,然后我在此创建了一个公共同义词:

create or replace public synonym sf_timer for sys.sf_timer;
select * from all_synonyms where synonym_name = 'SF_TIMER';

然后我从另一个用户那里调用这个包:

set serveroutput on
declare
  i integer;
  j integer;
begin
  sf_timer.start_timer;
  for i in 1..100000
  loop
    j := j +1;
  end loop;
  sf_timer.show_elapsed_time('Test 1');
end;
/

不幸的是我收到了以下错误:

Error report:
ORA-06550: line 5, column 3:
PLS-00201: identifier 'SF_TIMER' must be declared
ORA-06550: line 5, column 3:
PL/SQL: Statement ignored
ORA-06550: line 10, column 3:
PLS-00201: identifier 'SF_TIMER' must be declared
ORA-06550: line 10, column 3:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.

我可以从all_synonyms中看到这个公共同义词,但我不知道为什么我不能在我的架构中调用该包。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您是否已授予权限?

以SYS身份运行时,请执行此操作...

GRANT EXECUTE ON SYS.SF_TIMER TO <user-you're-using>;

进一步说明,在SYS模式中创建对象通常被认为是不好的做法: - )