oracle序列创建以后,如果想重置序列从 0 开始,逐渐递增1,可以采用如下存储过程: create or replace procedure reset_seq( p_seq_name in varchar2 ) is l_val number; begin execute immediate 'select ' || p_seq_name || '.nextval from dual' INTO l_val; execute immediate 'alter sequence ' || p
业务需求是:二元化编号规则:RYH+年月+001(开始),按月计算,每月1号重置为001 数据库中已有序列和函数如下: 解决方法:采用Oracle定时任务,每月1号重置该序列从1开始增长,SQL如下: select GET_RYH_NO from dual; select SEQ_RYH_NO_ID.NEXTVAL from dual; select * from user_jobs;/*查询定时任务*/ /*新建每月01号重置二元化序列为1起始的存储过程*/ CREATE OR REPLACE
概念: 所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复. 1.序列可以自动生成唯一值 2.是一个可以被共享的对象 3.典型的用来生成主键值的一个对象 4.可以替代应用程序代码 5.当sequence的值存放在缓存中时可以提高访问效率. 创建序列语法: CREATE SEQUENCE name [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n |
出现 ORA-08002: 序列XXXXXXX.CURRVAL 尚未在此进程中定义. 导致原因:因为是首次查询序列的当前值,内存中之前并没有缓存序列的任何值,所以需要先查询 一下序列的下一个值(此时,Oracle会自动缓存已查询的序列值),再查询序列的当前值. XXXXXXX.CURRVAL 只有在访问了XXXXXXX.NEXTVAL时才有效如select XXXXXXX.NEXTVAL from dual;select XXXXXXX.CURRVAL from dual;而直接select X
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中一样的自增