ORA-08002: 序列 SEQ_WGB_TEST2.CURRVAL 尚未在此会话中定义

环境

 

Oracle 11.2.0 + SQL Plus

 

问题

 

查询Sequence的当前值出现以下错误:

 

SQL> SELECT seq_WGB_Test2.CURRVAL FROM dual;

SELECT seq_WGB_Test2.CURRVAL FROM dual

       *
第 1 行出现错误:

ORA-08002: 序列 SEQ_WGB_TEST2.CURRVAL 尚未在此会话中定义


 

                    

解决

 

 首先创建一个测试序列:

 

SQL> CREATE SEQUENCE seq_WGB_Test2
  2  INCREMENT BY 1
  3  START WITH 1000;

序列已创建。

 

 

 然后查询当前值:

 

SQL> SELECT seq_WGB_Test2.CURRVAL FROM dual;
SELECT seq_WGB_Test2.CURRVAL FROM dual
       *
第 1 行出现错误:
ORA-08002: 序列 SEQ_WGB_TEST2.CURRVAL 尚未在此会话中定义


 

调用NEXTVAL后再次查询当前值:

 

SQL> SELECT seq_WGB_Test2.NEXTVAL FROM dual;

   NEXTVAL
----------
      1000

SQL> SELECT seq_WGB_Test2.CURRVAL FROM dual;

   CURRVAL
----------
      1000

SQL>


 

 

创建Sequence后直接查询它的当前值(CURRVAL)会出错,要先调用Sequence对象.NEXTVAL,才能查询当前值。注意:Oracle是不区分对象名大小写的。

 

完整日志

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Wentasy>sqlplus

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 5月 8 18:49:34 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

请输入用户名:  wgb
输入口令:

连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> CREATE SEQUENCE seq_WGB_Test
  2  MINVALUE 0
  3  INCREMENT BY 1
  4  START WITH 1000;
CREATE SEQUENCE seq_WGB_Test
                *
第 1 行出现错误:
ORA-00955: 名称已由现有对象使用


SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
ADMIN                          TABLE
BIN$3nsCzoq0TWOFAF7FNWp2Ww==$0 TABLE
BIN$6nilOleNQvqabmvq1Zg+xA==$0 TABLE
BIN$UITFwn98Tgymdh0eN9itmQ==$0 TABLE
BIN$lMXf63gRRYScHIKIQowBtQ==$0 TABLE
BIN$nrOJ+rQPQC2q5p78nwGiiA==$0 TABLE
BIN$q+6u6SPaR8q8tuTSUD9qgA==$0 TABLE
BIN$qNbqiRwcT+Gy44xHHER59Q==$0 TABLE
CATEGORY                       TABLE
COMMONS                        TABLE
CONTACTOR                      TABLE

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
COUNTRY                        TABLE
DEPT                           TABLE
EMP                            TABLE
ENROLLMENT                     TABLE
FACES                          TABLE
MEMBER                         TABLE
MESSAGE                        TABLE
PRODUCT                        TABLE
STUDENT                        TABLE
TBBILL                         TABLE
TBPERSON                       TABLE

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
TBSUIT                         TABLE
TBUSERTBSUIT                   TABLE
TEST                           TABLE
T_ADDRESS                      TABLE
T_COURSE                       TABLE
T_HIBERNATE_USER               TABLE
T_ITEM                         TABLE
T_MONEY_USER                   TABLE
T_ORDER                        TABLE
T_STUDENT                      TABLE
T_USER                         TABLE

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
T_USER2                        TABLE

已选择34行。

SQL> select * from seq;

SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE

------------------------------ ---------- ---------- ------------ - - ----------

LAST_NUMBER
-----------
HIBERNATE_SEQUENCE                      1 1.0000E+28            1 N N         20

          1

SEQ_FOR_TEST                            1 1.0000E+28            1 N N         20

          5

SEQ_WGB_ADMIN                           1 1.0000E+28            1 N Y          0

         20


SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE

------------------------------ ---------- ---------- ------------ - - ----------

LAST_NUMBER
-----------
SEQ_WGB_COMMON                          1 1.0000E+28            1 N N         20

          1

SEQ_WGB_COMMONS                         1 1.0000E+28            1 N N         20

          9

SEQ_WGB_CONTACTOR                       1 1.0000E+28            1 N Y          0

         28


SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE

------------------------------ ---------- ---------- ------------ - - ----------

LAST_NUMBER
-----------
SEQ_WGB_FACES                           1 1.0000E+28            1 N N         20

         12

SEQ_WGB_MEMBER                          1 1.0000E+28            1 N N         20

          7

SEQ_WGB_MESSAGE                         1 1.0000E+28            1 N N         20

          6


SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE

------------------------------ ---------- ---------- ------------ - - ----------

LAST_NUMBER
-----------
SEQ_WGB_MONEY_USER                      1 1.0000E+28            1 N N         20

          8

SEQ_WGB_TEST                            1 1.0000E+28            1 N N         20

        242


已选择11行。

SQL> CREATE SEQUENCE seq_WGB_Test2
  2  INCREMENT BY 1
  3  START WITH 1000;

序列已创建。

SQL> SELECT seq_WGB_Test2.CURRVAL FROM dual;
SELECT seq_WGB_Test2.CURRVAL FROM dual
       *
第 1 行出现错误:
ORA-08002: 序列 SEQ_WGB_TEST2.CURRVAL 尚未在此会话中定义


SQL> SELECT seq_WGB_Test2.NEXTVAL FROM dual;

   NEXTVAL
----------
      1000

SQL> SELECT seq_WGB_Test2.CURRVAL FROM dual;

   CURRVAL
----------
      1000

SQL>


 

 

 

ORA-08002: 序列 SEQ_WGB_TEST2.CURRVAL 尚未在此会话中定义_第1张图片 ORA-08002: 序列 SEQ_WGB_TEST2.CURRVAL 尚未在此会话中定义_第2张图片  ORA-08002: 序列 SEQ_WGB_TEST2.CURRVAL 尚未在此会话中定义_第3张图片
@Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]

你可能感兴趣的:(oracle,序列,currval,ORA-08002,尚未在此会话中定义)