现在的位置: 首页 > 数据库 > 正文

Oracle使用序列时报错:ORA-02287此处不允许序号

2017年07月19日 数据库 ⁄ 共 890字 暂无评论 ⁄ 阅读 425 次

在PLSQL中写存储过程时,在很多情形下使用序列会报错,ORA-02287此处不允许序号。出现这种情况后,一般的处理方法是给SQL再加一个外层用序列。为了了解到底哪个地方使用序列时报错,可以了解一下使用序列的限制。

Restrictions on Sequence Values You cannot use CURRVAL and NEXTVAL in the following constructs:

在以下情形中,你不能使用序列的currval和nextval值:

A subquery in a DELETE, SELECT, or UPDATE statement

DELETE、SELECT或UPDATE的子查询中

A query of a view or of a materialized view

视图或物化视图的查询

A SELECT statement with the DISTINCT operator

带distinct的select语句

A SELECT statement with a GROUP BY clause or ORDER BY clause

带group by或order by的select语句

A SELECT statement that is combined with another SELECT statement with the
UNION, INTERSECT, or MINUS set operator

两条通过union、intersect或minus拼合的select语句

The WHERE clause of a SELECT statement

select的where条件中

The DEFAULT value of a column in a CREATE TABLE or ALTER TABLE statement

创建表或修改列,不可是某列的默认值

The condition of a CHECK constrain

约束条件

情形总结一下,在select语句中:

select后取值的字段中不可有distinct

from后不可是视图

不可以where条件中

本条语句中不可有order by或group by

不可以在子查询中

不可在多条语句的拼合中

不可作为约束条件和默认值

出现报错的一般解决办法是在外层再多一层。

» 声明:本站文章源于个人经验总结或书籍、互联网转载,内容仅用于个人学习,请勿转载,否则后果自负!

给我留言

留言无头像?