String sql="select BV_OBS_AGG_ID_SEQ.nextval v from dual";
这实际上是一个序列,是oracle自己带的一个特性,有点类似于sql server里面的identity 这个东西,每次自己增长若干,dual是一个虚表。
nextval是指的下一个。。
CREATE SEQUENCE
Purpose
Use the CREATE
SEQUENCE
statement to create a sequence, which is a database object from which multiple users may generate unique integers. You can use sequences to automatically generate primary key values.
When a sequence number is generated, the sequence is incremented, independent of the transaction committing or rolling back. If two users concurrently increment the same sequence, the sequence numbers each user acquires may have gaps because sequence numbers are being generated by the other user. One user can never acquire the sequence number generated by another user. Once a sequence value is generated by one user, that user can continue to access that value regardless of whether the sequence is incremented by another user.
Sequence numbers are generated independently of tables, so the same sequence can be used for one or for multiple tables. It is possible that individual sequence numbers will appear to be skipped, because they were generated and used in a transaction that ultimately rolled back. Additionally, a single user may not realize that other users are drawing from the same sequence.
Once a sequence is created, you can access its values in SQL statements with the CURRVAL
pseudocolumn (which returns the current value of the sequence) or the NEXTVAL
pseudocolumn (which increments the sequence and returns the new value).
- "Pseudocolumns" for more information on using the
CURRVAL
andNEXTVAL
- "How to Use Sequence Values"for information on using sequences
- ALTER SEQUENCE or DROP SEQUENCE for information on modifying or dropping a sequence
Prerequisites
To create a sequence in your own schema, you must have CREATE
SEQUENCE
privilege.
To create a sequence in another user's schema, you must have CREATE
ANY
SEQUENCE
privilege.