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

一.问题描述:

   在oracle使用insert增加数据时,使用sequence自增时报错ORA-02287: 此处不允许序号

   源代码:

<insert id="insert">
	    INSERT INTO
			sysmgtdb.PUB_DICTTYPE(ID,CODE,NAME,VERSION,START_TIME,END_TIME,CREATOR_ID,CREATE_DATE,IS_VALID,NOTES)values(
			(select SEQ_PUB_DICTTYPE.nextval from dual),
			#{CODE,jdbcType=VARCHAR},
			#{NAME,jdbcType=VARCHAR},
			#{VERSION,jdbcType=VARCHAR},
			#{START_TIME,jdbcType=DATE},
			#{END_TIME,jdbcType=DATE},
			#{CREATOR_ID,jdbcType=NUMERIC},
			sysdate,
			#{IS_VALID,jdbcType=NUMERIC},
			#{NOTES,jdbcType=VARCHAR}
			)
	</insert>

二.问题分析:

   查了相关大佬的方法,应该是与sequence格式相违背

三.问题解决:

<insert id="insert">
	    INSERT INTO
			sysmgtdb.PUB_DICTTYPE(ID,CODE,NAME,VERSION,START_TIME,END_TIME,CREATOR_ID,CREATE_DATE,IS_VALID,NOTES)
			SELECT sysmgtdb.SEQ_PUB_DICTTYPE.nextval ,
			#{CODE,jdbcType=VARCHAR},
			#{NAME,jdbcType=VARCHAR},
			#{VERSION,jdbcType=VARCHAR},
			#{START_TIME,jdbcType=DATE},
			#{END_TIME,jdbcType=DATE},
			#{CREATOR_ID,jdbcType=NUMERIC},
			sysdate,
			#{IS_VALID,jdbcType=NUMERIC},
			#{NOTES,jdbcType=VARCHAR}
			FROM dual
	</insert>

猜你喜欢

转载自blog.csdn.net/yiye2017zhangmu/article/details/87916790