This new feature provides greater simplicity, but not improved performance.

We can see that the statistics for I/O, executes and fetches are identical to those for our 10,000 PL/SQL sequence expressions.

Critically, the elapsed and CPU times are also the same (we attribute such tiny differences to "noise").

As most developers will be aware, sequences have never been directly supported in PL/SQL.

In versions prior to 11g, assigning a variable from a sequence (i.e.

NEXTVAL from dual call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 10000 0.17 0.19 0 0 0 0 Fetch 10000 0.39 0.42 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 20001 0.56 0.62 0 0 Misses in library cache during parse: 1 Optimizer mode: ALL_ROWS Parsing user id: 81 (recursive depth: 1) Rows Row Source Operation ------- --------------------------------------------------- 1 SEQUENCE S (cr=0 pr=0 pw=0 time=0 us) 1 FAST DUAL (cr=0 pr=0 pw=0 time=0 us cost=2 size=0 card=1) ******************************************************************************** We have 10,000 executions and fetches of this statement (sequence cache size is at the default of 20 as we can see from the current gets above.

Oracle updated the SEQ$ table 500 times to assign 10,000 sequence numbers; with a series of 20 sequence values per update).We can see that, in this case, the sequence pseudo-column is used in a similar manner to a function call.Note that we can also use CURRVAL in the same manner as NEXTVAL, as the following example demonstrates.This means we can use sequence expressions in PL/SQL anywhere we can validly use a number.To demonstrate this, we will create a sequence ("S") and run some simple examples, as follows.Oracle has released some major new features for PL/SQL developers with 11g (see this list of articles for details).