当前位置:首页 > 技能相关 > ORACLE > 正文内容

ORA-02287: 此处不能使用序列号

admin2年前 (2022-12-14)ORACLE2780 修订时间:2022-12-14 11:57:20

联合多表查询的时候,使用序列去完成表格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查询,不做插入操作,可以分别执行两条语句,利用程序进行数据的融合;

 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

扫描二维码推送至手机访问。

版权声明:本文由LIFEI - blog发布,如需转载请注明出处。

本文链接:http://www.lifeiai.com/?id=261

分享给朋友:

相关文章

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。