我一直在努力尝试在oracle中的包或存储过程中添加对公共同义词的引用一段时间,我想知道是否有解决这个问题的方法,而不是直接访问表。例如:
CREATE OR REPLACE PROCEDURE test_func AS
test_int INTEGER;<br>
BEGIN<br>
select count(*) INTO test_int FROM test_synonym;
END;
/
我知道这个程序什么都不做,但这只是一个例子。表'test_synonym'实际上是另一个模式中表的公共同义词。我对该表有选择权限,但尝试重复编译会给我一个错误:
Error(5,38): PL/SQL: ORA-00942: table or view does not exist
感谢您的时间。
答案 0 :(得分:2)
您创建过程的架构是否指示 SELECT privs(即不通过角色?)
创建过程(函数/包)时,需要直接授予对表的权限,而不是通过角色授予权限。