Oracle—序列

 序列的兩參數:nextvalcurrval


Nextval  returns the next  avaiable sequence value.It returns a unique value every time it is referenced,even for different users.


Currval obtains the current sequence value.


打開第一個會話,創建個序列:


在調用currval的值前,必須先調用nextval的值。


SQL> create sequence myseq1  increment by 10 start with 120 maxvalue 9999 nocache nocycle;

Sequence created.


SQL> select myseq1.currval  from dual;

select myseq1.currval  from dual

       *

ERROR at line 1:

ORA-08002: sequence MYSEQ1.CURRVAL is not yet defined in this session



所以先調用nextval的值,第一個值是120


SQL> select myseq1.nextval from dual;

   NEXTVAL

----------

       120


打開第二個會話,調用nextval的值會繼續增加爲130


SQL> select myseq1.nextval from dual;

   NEXTVAL

----------

       130


再回到第一個會話中,調用currval的值,


SQL> select myseq1.currval from dual;

   CURRVAL

----------

       120


可以看到currval的值並不是130,還是第一個會話上次的值,


調用nextval的值,


SQL> select myseq1.nextval from dual;

   NEXTVAL

----------

       140


可以看到,nextval的值是在第二會話的基礎上增加的。


所以nextval的值是每調用一次就增加一次;currval的值調用時,還是和自身會話的當前值一樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章