oracle序列参数:nextval和currval
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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的值。
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的值调用时,还是和自身会话的当前值一样。