ORA-02287: 此处不能使用序列号
联合多表查询的时候,使用序列去完成表格ID自动编码时,会又如题的报错提示。
出错的原因:
NEXTVAL和【UNION或者UNION ALL】不能在 *同一级中* 同时使用
案列:
取两个序列号插入同一个表中的时候,就出现了错误:ORA-02287: 此处不能使用序列号
SQL简化了一下,看起来更容易明白:
SELECT seq_num.NEXTVAL seqId FROM dual UNION ALL --此处换成 UNION 也是同样的错误 SELECT seq_.NEXTVAL seqId FROM dual
解决方案:
<1>两个select结果union all之后直接插入某个表;
INSERT INTO XXXXXX (seqId, name,age) SELECT seq_num.NEXTVAL seqId, --和UNION只要不是同一级的话,就不会出错 tgt.* FROM ( SELECT '张三' name, 16 age FROM dual UNION SELECT '李四' name, 17 age FROM dual ) tgt
<2>如果仅仅是SELECT查询,不做插入操作,可以分别执行两条语句,利用程序进行数据的融合;