MySeq.currval 從你的會話中的MySeq序列獲取最新的值並返回,所以,它不曾被定義,直到你在你的會話中至少一次用MySeq.NEXTVAL獲取一個值。CURRVAL的目的是讓你在你的代碼中使用某個序列值多於一次。sql
若是CURRVAL僅從任意會話取得最新的值並返回,那麼在下面的代碼中它就變得無用,事實上,那會致使數據污染。session
也有繞過這個問題的技巧:oracle
select LAST_NUMBER from user_sequences where sequence_name='MYSEQ';
insert into parent(parent_id, ...) values(mysequence.NEXTVAL, ...); insert into child(parent_id, ...) values(mysequence.CURRVAL, ...);
stackoverflowthis