oracle序列参数:nextval和currval
序列的两参数: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的值。
1
2
3
4
5
6
7
8
|
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。
1
2
3
4
|
SQL>
select
myseq1.nextval
from
dual;
NEXTVAL
----------
120
|
打开第二个会话,调用nextval的值会继续增加为130。
1
2
3
4
|
SQL>
select
myseq1.nextval
from
dual;
NEXTVAL
----------
130
|
再回到第一个会话中,调用currval的值,
1
2
3
4
|
SQL>
select
myseq1.currval
from
dual;
CURRVAL
----------
120
|
可以看到currval的值并不是130,还是第一个会话上次的值,
调用nextval的值,
1
2
3
4
|
SQL>
select
myseq1.nextval
from
dual;
NEXTVAL
----------
140
|
可以看到,nextval的值是在第二会话的基础上增加的。
所以nextval的值是每调用一次就增加一次;currval的值调用时,还是和自身会话的当前值一样。