sql - 序列不存在 ORA-02289

标签 sql oracle

我在获取序列时遇到问题。 我已以管理员身份创建了一个序列,并已向其他用户授予选择和更改权限。

CREATE SEQUENCE  "OWNER"."TOT_SEQ"  MINVALUE 1000 MAXVALUE 1000000000 INCREMENT BY 1 START WITH 1000 CACHE 20 NOORDER  NOCYCLE ;

grant select,ALTER on TOT_SEQ to user;
commit;

当我这样做时:

select sequence_name from all_sequences;

TOT_SEQ

我可以在列表中看到我的序列。

但我无法访问代码中的序列。使用:

select <SEQUNCE_name>.nextval from dual;

我做错了什么?

最佳答案

您必须通过以下方式完全限定您的序列:

SELECT <owner>.<sequence name>.nextval FROM dual;

或者为其创建一个公共(public)同义词:

CREATE PUBLIC SYNONYM TOT_SEQ for OWNER.TOT_SEQ;
SELECT TOT_SEQ.nexval FROM DUAL;

关于sql - 序列不存在 ORA-02289,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25726573/

相关文章:

sql - 查询以查找自连续观察列的最后一个值以来的天数 - PostgreSQL

mysql - 如何减少显示输出所需的加载时间?

sql - 如何避免sql server中的游标?也想避免 while 循环

mysql - 在 mysql 中为读写密集型应用程序存储 url 的最佳方法

mysql - 语法错误 #1064

sql - 表正在发生变化,触发器/函数可能看不到它(阻止平均成绩低于 2.5)

sql-server - SQL Server 中的 REGEXP_SUBSTR 等效项

oracle - 在 PLSQL 中使用嵌套函数的正确方法是什么?

oracle - 哪个 Oracle 11g 有 DBCA?

mysql - 使用 DECIMAL(31,0) 的原因