oracle序列参数:nextval和currval

  • Post author:
  • Post category:其他


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的值调用时,还是和自身会话的当前值一样。