1

我在 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 中看到这个公共同义词,但我不知道为什么我不能在我的模式中调用包。

提前致谢。

4

1 回答 1

2

您授予权限了吗?

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

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

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

于 2012-10-10T16:45:16.427 回答