我在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中看到这个公共同义词,但我不知道为什么我不能在我的架构中调用该包。
提前致谢。
答案 0 :(得分:2)
您是否已授予权限?
以SYS身份运行时,请执行此操作...
GRANT EXECUTE ON SYS.SF_TIMER TO <user-you're-using>;
进一步说明,在SYS模式中创建对象通常被认为是不好的做法: - )