在Oracle中既不对SELECT也不进行CREATE排序

时间:2019-02-04 12:30:05

标签: sql oracle database-sequence

在Oracle 11g Express Edition中使用sequence时遇到问题。它既不可访问也不可创建。 我尝试通过该查询获取NEXTVAL的序列。

select SEQ_PATIENT.nextval from dual;

它显示错误

  

ORA-02289:序列不存在

然后我尝试CREATE SYNONYM进行上述操作,如下所示

create synonym SEQ_PATIENT
for scott.SEQ_PATIENT;

它返回

  

ORA-00955:名称已被现有对象使用

为什么会这样?

2 个答案:

答案 0 :(得分:3)

此:

select SEQ_PATIENT.nextval from dual;

表示您要从名称为SEQ_PATIENT且属于当前架构(即您所连接的用户)的序列中选择下一个值。甲骨文说你没有那个顺序。


此:

create synonym SEQ_PATIENT for scott.SEQ_PATIENT;

尝试为名称为SEQ_PATIENT的对象(属于用户Scott)创建名为SEQ_PATIENT的同义词一个序列!)。 Oracle表示名称为SEQ_PATIENT的对象已经存在。

那么:您如何连接到数据库?是哪个用户

的结果是什么
select * from all_objects where object_name = 'SEQ_PATIENT';

它应该告诉您谁拥有它以及它是什么。根据其结果,我们将可以建议进一步的步骤。

答案 1 :(得分:1)

我刚刚使用了DROP SYNONYM,然后再次使用了CREATE,效果很好。