由于序列的currval方法只有在执行nextval之后才能使用,否则会报
    ORA-08002: 序列XXXXX.CURRVAL 尚未在此进程中定义
的错,因此为了获得序列的当前值,我不惜冒着被世人唾弃地无耻地把seq.currval改成了seq.nextval-1。但是我还是要问,真的没有其他办法获取序列的当前值了吗?

解决方案 »

  1.   

    如果没有取currval,就不能取nextval,用exception解决,当取currval报错时,则就取下nextval并返回nextval;
      

  2.   

     select LAST_NUMBER from   user_sequences   where   sequence_name='TEST_SEQ';不过这个只对设置为nocache的序列有用。
      

  3.   


    nextval其实就是当前值,知识英文单词的词义让你不习惯吧。这就跟循环游标以及while循环一个道理,人家都是用next来进行判断,而且赋值都是 =next类似的写法。外国人习惯这么思考,也习惯这么写,又什么办法呢?