ORA-02287:此处不允许序号

出现这类问题表示的是在 Oracle 中不允许使用序列号,原因如下:

Restrictions on Sequence Values You cannot use CURRVAL and NEXTVAL in the following constructs:
1、A subquery in a DELETE, SELECT, or UPDATE statement
2、A query of a view or of a materialized view
3、A SELECT statement with the DISTINCT operator
4、A SELECT statement with a GROUP BY clause or ORDER BY clause
5、A SELECT statement that is combined with another SELECT statement with the UNION, INTERSECT, or MINUS set operator
6、The WHERE clause of a SELECT statement
7、The DEFAULT value of a column in a CREATE TABLE or ALTER TABLE statement
8、The condition of a CHECK constrain

可以理解为:子查询,包含distinct语句、where后面查询子句数据合并(union等)group byorder by建表时默认值作为约束条件等情况都不能用。

解决办法(select 为例)

-- 查询结果集查询外面在包裹一层查询,这样就可以放序列号字了。
insert(....)
select 序列,a.* 
from (
	select ... from table ...   
) a
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐