序列的兩參數:nextval和currval。
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的值調用時,還是和自身會話的當前值一樣。