无法在 Oracle 中使用函数、过程或序列的同义词

Posted

技术标签:

【中文标题】无法在 Oracle 中使用函数、过程或序列的同义词【英文标题】:Unable to use synonym of functions, procedures or seq in Oracle 【发布时间】:2014-03-21 13:18:32 【问题描述】:

我在用户 ID XXX 的用户 ID YYY 中创建了 functions/proc/seq 的同义词。

create SYNONYM my_seq FOR XXX.my_seq

当我尝试在用户 YYY 中使用 seq 时,出现以下错误:

ORA-00942:表或视图不存在

and with functions : ORA-00904: : invalid identifier

请告诉我哪里做错了。

【问题讨论】:

它显示在 Sqldeveloper 的同义词列中。 您需要在对象上修复 GRANTS。 您能帮帮我吗?实际上,我对 Oracle DB 很固执:D 【参考方案1】:

我将用一个简单的例子来演示。我在一台服务器上有两个模式。 Schema1 和 Schema2。

我登录到 Schema1 并运行下面的脚本。

-- Create sequence 
create sequence originalSeq
minvalue 1
maxvalue 999999999999999999999999
start with 1
increment by 10
cache 20;


GRANT SELECT ON originalSeq TO SCHEMA2;

然后我登录到 Schema2 并运行以下脚本。

    create or replace synonym pointertooriginalsreq
      for SCHEMA1.originalSeq;  

select pointertooriginalsreq.nextval from dual

这应该适用于 Oracle 8.1.7 以上的所有版本。如果您仍然遇到问题,请告诉我。

【讨论】:

【参考方案2】:

您必须提供来自 XXX 用户的授权:

GRANT SELECT ON my_seq TO YYY;

【讨论】:

以上是关于无法在 Oracle 中使用函数、过程或序列的同义词的主要内容,如果未能解决你的问题,请参考以下文章

oracle 序列 视图 索引 同义词

oracle 查看表结构语句

oracle sql 基础:数据定义语言(创建和管理序列索引同义词)

oracle学习之第一个存储过程:打印Hello World

在 SQL Server 上为 Oracle 存储过程使用同义词

oracle 中怎么创建同义词?