出现 ORA-08002: 序列XXXXXXX.CURRVAL 尚未在此进程中定义. 导致原因:因为是首次查询序列的当前值,内存中之前并没有缓存序列的任何值,所以需要先查询 一下序列的下一个值(此时,Oracle会自动缓存已查询的序列值),再查询序列的当前值. XXXXXXX.CURRVAL 只有在访问了XXXXXXX.NEXTVAL时才有效如select XXXXXXX.NEXTVAL from dual;select XXXXXXX.CURRVAL from dual;而直接select X
oracle中的缓存主要是指SGA中的:1.share pool2.database buffer cache清空命令如下:首先要登录到sqlplus命令下,输入如下命令即可:SQL> alter system flush shared_pool; //清空share poolSQL> alter system flush buffer_cache; //清空database buffer cache
概念: 所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复. 1.序列可以自动生成唯一值 2.是一个可以被共享的对象 3.典型的用来生成主键值的一个对象 4.可以替代应用程序代码 5.当sequence的值存放在缓存中时可以提高访问效率. 创建序列语法: CREATE SEQUENCE name [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n |
select t.*, t.rowid from tbl_type t order by t.id desc Select SEQ_TBL_TYPE_ID.NextVal From Dual; ; ; Select SEQ_TBL_TYPE_ID.currVal From Dual; DROP SEQUENCE SEQ_TBL_TYPE_ID; CREATE SEQUENCE SEQ_TBL_TYPE_ID; Oracle中创建.修改.删除序列 ORACLE没有象SQL SERVER中一样的自增