业务需求是:二元化编号规则: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
procedure RESET_SEQ_RYH_NO_ID AS
n NUMBER(10);
tsql VARCHAR2(100);
begin
if TO_CHAR(SYSDATE,'DD') = '' then /*每月1号重置*/
EXECUTE IMMEDIATE 'select SEQ_RYH_NO_ID.nextval from dual'
INTO n;
n := - (n - 1);
tsql := 'alter sequence SEQ_RYH_NO_ID increment by ' || n;
EXECUTE IMMEDIATE tsql;
EXECUTE IMMEDIATE 'select SEQ_RYH_NO_ID.nextval from dual'
INTO n;
tsql := 'alter sequence SEQ_RYH_NO_ID increment by 1';
EXECUTE IMMEDIATE tsql;
end if;
end RESET_SEQ_RYH_NO_ID; /*定义定时任务*/
declare
job number;
BEGIN
DBMS_JOB.SUBMIT(
JOB => job, /*自动生成JOB_ID*/
WHAT => 'RESET_SEQ_RYH_NO_ID;', /*需要执行的存储过程名称或SQL语句*/
NEXT_DATE => sysdate, /*初次执行时间*/
INTERVAL => 'trunc(sysdate+1)' /*每隔1天执行一次*/
);
commit;
end; /*移除定时任务*/
begin
dbms_job.remove(126);/*括号中传入定时任务id*/
end;

利用Oracle定时任务重置序列的更多相关文章

  1. oracle 重置序列从指定数字开始的方法详解

    原文 oracle 重置序列从指定数字开始的方法详解 重置oracle序列从指定数字开始 declare n ); v_startnum ):;--从多少开始 v_step ):;--步进 tsql ...

  2. 【转】Oracle重置序列(不删除重建方式)

    Oracle中一般将自增sequence重置为初始1时,都是删除再重建,这种方式有很多弊端,依赖它的函数和存储过程将失效,需要重新编译.不过还有种巧妙的方式,不用删除,利用步长参数,先查出sequen ...

  3. 使用oracle序列+oracle定时任务获取每月从1开始的流水码

    --创建序列 --入库create sequence rk_seq;--出库create sequence ck_seq;--移库create sequence yk_seq; --创建存储过程 cr ...

  4. Oracle 使用序列实现自增列 及重置序列

    序列是oracle用来生产一组等间隔的数值.序列是递增,而且连续的.oracle主键没有自增类型,所以一般使用序列产生的值作为某张表的主键,实现主键自增.序列的编号不是在插入记录的时候自动生成的,必须 ...

  5. Oracle重置序列

    oracle序列创建以后,如果想重置序列从 0 开始,逐渐递增1,可以采用如下存储过程: create or replace procedure reset_seq( p_seq_name in va ...

  6. 转-利用Oracle审计功能来监测试环境的变化

    http://blog.csdn.net/luowangjun/article/details/5627102利用Oracle审计功能来监测试环境的变化 做过测试的人都应该会碰到这样的情况:测试发现的 ...

  7. oracle定时任务

    一.简介 当我们需要oracle数据库定时自动执行一些脚本,或进行数据库备份.数据库的性能优化,包括重建索引等工作是需要使用到定时任务. 定时任务可以使用以下两种完成. 1.操作系统级的定时任务,wi ...

  8. 在SQL 2012中使用和Oracle 一样的序列

    使用过Oracle的都知道,Oracle中的自增是靠序列来完成的,在一定程度上蛮方便的.现在SQL 2012中也有序列了.来看看怎么做的吧! SQL Server 现在将序列当成一个对象来实现,创建一 ...

  9. 【Oracle】使用dbms_job包创建Oracle定时任务

           在Oracle的包里面,有一个名字叫做DBMS_JOB的包,它的作用是安排和管理作业队列.通过作业队列,可以让Oracle数据库定期执行特定的任务.当使用DBMS_JOB管理作业的时候, ...

随机推荐

  1. String、StringBuffer和StringBuilder区别

    String.StringBuffer和StringBuilder区别 1.长度是否可变 String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的concat 方法,那也 ...

  2. jQuery获取上传文件的名称

    //获取文件名称 function getFileName(path) {     var pos1 = path.lastIndexOf('/');     var pos2 = path.last ...

  3. C++获取文件夹下所有文件的路径

    代码 getFiles()函数的作用: path是一个文件夹路径,函数在path文件夹下寻找所有文件(包括子文件夹下的文件),然后将所有文件的路径存入files #include <io.h&g ...

  4. 03—mybatis的基本用法02

    深入Mapper XML映射文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比 ...

  5. C# 动态语言扩展(11)

    在 C# 4 开始添加 dynamic 类型.Mono C# 已经支持 C# 6.0 了. DLR C# 4 动态功能是 Dynamic Language Runtime (动态语言运行时,DLR)的 ...

  6. git + idea 配置 github设置ssh免登陆方式提交拉取代码

    1.下载安装git,官网:https://git-scm.com/download/win  安装默认配置安装 git2.20版本地址百度网盘地址: 链接:https://pan.baidu.com/ ...

  7. 【Wince-截图】对Wince进行截图

    对Wince进行截图 方法一 使用Wince桌面助手对Wince进行截图 PC通过USB成功连接到手持机 打开Wince桌面助手CERHOST.exe程序 File->Capture进行截图 C ...

  8. shell 脚本拉取svn代码,vim中文乱码解决办法

    VIM安装成功后可以使用,但对中文是乱码,解决方法是在vim的配置文档中添加相关设置即可: 找到etc/vimrc 编辑~/.vimrc文件,加上如下几行: set fileencodings=utf ...

  9. Java的23种设计模式<一>

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式 ...

  10. Friend-Graph (HDU 6152)2017中国大学生程序设计竞赛 - 网络选拔赛

    Problem Description It is well known that small groups are not conducive of the development of a tea ...