Restrictions on the Use of sequence objects in Oracle NEXTVAL and CURRVAL are only valid in SQL statements and not directly valid in SPL statements. (However, SQL statements using NEXTVAL and CURRVAL can be used in SPL routines) The following restrictions apply to these operators in SQL statements: www.2cto.com [1] In CREATE TABLE or ALTER TABLE statements, NEXTVAL or CURRVAL cannot be specified in the following context: in the DEFAULT clause. Check constraints. [2] In the SELECT statement, NEXTVAL or CURRVAL cannot be specified in the following context: the DISTINCT keyword is used in the projection list. In the WHERE, group by, or order by clause. In the subquery. When the UNION operator is combined with the SELECT statement. [3] NEXTVAL or CURRVAL cannot be specified in either of the following contexts: References to remote sequence objects in another database in a multipart storage expression. Source http://blog.csdn.net/xiangsir/article/details/8608477