Sequence:
A sequence is a database object that generates unique numbers, mostly used for primary key values. One can select the NEXTVAL and CURRVAL from a sequence. Selecting the NEXTVAL will automatically increment the sequence.
Another Definition,
A sequence is a highly scalable, non-blocking, generator that generates unique numbers.
Nextval:
If NEXTVAL is invoked on a sequence, it makes sure that a unique number is generated.
Currval:
CURRVAL can only be used if a session has already called NEXTVAL on a trigger or by sql, CURRVAL will then return the same number that was generated with NEXTVAL.
Create a simple sequence:
CREATE SEQUENCE empseq;
Sequence created.
Selecting from the sequence:
SQL> select empseq.nextval from dual;
NEXTVAL
----------
1
SQL> select empseq.nextval from dual;
NEXTVAL
----------
2
Note that nextval and currval returns the same value for each row of a select:
SQL> select empseq.nextval, empseq.currval from dual;
NEXTVAL CURRVAL
---------- ----------
3 3
In PL/SQL, up to Oracle 10g, nextval and currval have to be selected from dual:
declare
n number;
begin
select sequence_test.nextval into n from dual;
dbms_output.put_line(n);
end
/
Apparently, in Oracle 11g, one is not required anymore to select from dual:
declare
n number;
begin
n := sequence_test.nextval;
dbms_output.put_line(n);
end
/
No comments:
Post a Comment