--创建序列

--入库
create sequence rk_seq;
--出库
create sequence ck_seq;
--移库
create sequence yk_seq;

--创建存储过程

create or replace procedure reset_seq(rk_seq_name in varchar2,
ck_seq_name in varchar2,
yk_seq_name in varchar2) is
l_val number;
begin
--rk
execute immediate 'select ' || rk_seq_name || '.nextval from dual'
INTO l_val;

execute immediate 'alter sequence ' || rk_seq_name || ' increment by -' ||
l_val || ' minvalue 0';

execute immediate 'select ' || rk_seq_name || '.nextval from dual'
INTO l_val;

execute immediate 'alter sequence ' || rk_seq_name ||
' increment by 1 minvalue 0';
--ck
execute immediate 'select ' || ck_seq_name || '.nextval from dual'
INTO l_val;

execute immediate 'alter sequence ' || ck_seq_name || ' increment by -' ||
l_val || ' minvalue 0';

execute immediate 'select ' || ck_seq_name || '.nextval from dual'
INTO l_val;

execute immediate 'alter sequence ' || ck_seq_name ||
' increment by 1 minvalue 0';

--yk
execute immediate 'select ' || yk_seq_name || '.nextval from dual'
INTO l_val;

execute immediate 'alter sequence ' || yk_seq_name || ' increment by -' ||
l_val || ' minvalue 0';

execute immediate 'select ' || yk_seq_name || '.nextval from dual'
INTO l_val;

execute immediate 'alter sequence ' || yk_seq_name ||
' increment by 1 minvalue 0';
end;

--创建定时任务

declare
job number;
begin
dbms_job.submit(job,
' begin reset_seq(''rk_seq'', ''ck_seq'', ''yk_seq'');end;',
sysdate,
'TRUNC(LAST_DAY(SYSDATE))+1+1/24');
end;


背景:数据WCS_TASK(WCS_任务)表中有一个WCS_ID(任务编码)的字段,任务编号规则:1位任务类型+4位年月+五位流水码 ,如12103000001  (TYPE--任务类型: 1--入库,2--出库,3--移库)

要求:新增WCS_TASK数据时,WCS_ID字段程序中自动生成,而且每个月的流水码要从1开始

难点:在于并发情况下生成流水码不能重复,并且每月重置

解决办法:利用数据库的序列来获取流水码,然后创建数据库定时任务,每个月1号重置序列

用法:数据库创建好序列和定时任务,直接在程序中查询相应序列即可获取不重复的流水码,序列的重置工作由定时任务自动执行

使用oracle序列+oracle定时任务获取每月从1开始的流水码的更多相关文章

  1. oracle 序列重置

    问题一:怎样重置oracle序列 oracle序列创建以后,假设想重置序列从 0 開始,逐渐递增1,能够採用例如以下存储过程: create or replace procedure reset_se ...

  2. 一次获取多个oracle序列值

    一次获取多个oracle序列值 学习了:http://blog.csdn.net/wangchsh2008/article/details/53495961 select seq_one.nextva ...

  3. oracle序列的创建和使用

    oracle 序列的创建与使用 (2012-03-15 16:14:09) -------------------------------------------------------------- ...

  4. oracle序列中cache和nocache

    首先我这篇博客的内容是我不知道oracle里的 cache 是什么,结果越查越多... "序列的cache通常为 20,但在需要依据序列值判断创建的先后顺序时必须是 NOCACHE" ...

  5. mysql实现oracle序列

    mysql实现oracle序列的方案1.建表,表结构为:drop table if exists sequence; create table sequence ( seq_name VARCHAR( ...

  6. Oracle序列 与 基本函数介绍

    目录 Oracle序列 与 基本函数介绍 常用词汇 数据字典(data dictionary:dd) oracle序列技术理解 账号管理 基本函数介绍及应用 海韵听心 PL/SQL Developer ...

  7. oracle 序列中cache 有什么用途

    create sequence name increment by x //x为增长间隔 start with x //x为初始值 maxvalue x //x为最大值 minvalue x //x为 ...

  8. oracle序列

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

  9. oracle 序列 详解

    序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l  自动提供唯一的数值 l  共享对象 l  主要用于提供主键值 l  将序列值装入内存可以提高访问效率 创建序列: 1.  要有创建 ...

随机推荐

  1. Android 神奇的SpannableStringBuilder

    一 无图言屌 先看看神奇的效果 仅用一个TextView实现 二 SpannableStringBuilder Google官方介绍 This is the class for text whose ...

  2. Mac 外接 Dell 4K 显示器字体模糊解决办法

    Mac 外接 Dell 4K 显示器字体模糊解决办法 mac mini mbp 2020 refs https://zhuanlan.zhihu.com/p/52100804 xgqfrms 2012 ...

  3. js multiple packages & lerna.js

    js multiple packages & lerna.js

  4. Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好?

    Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好? 在这个蔚蓝色的星球上,流传着两大神器的传说:据说Emacs是神的编辑器,而Vim是编辑器之神. 一些人勇敢地拾起了Vim或Emacs,却发 ...

  5. Chrome V8 系统架构

    Chrome V8 系统架构 Chromium 多进程多线程架构 design-documents https://www.chromium.org/developers/design-documen ...

  6. CSS 实现文本的竖向排版

    CSS 实现文本的竖向排版 demos .text{ word-wrap: break-word; width: 0px; } writing-mode .text{ writing-mode: ve ...

  7. C语言指针基本知识

    对程序进行编译的时候,系统会把变量分配在内存单位中,根据不同的变量类型,分配不同的字节大小.比如int整型变量分配4个字节,char字符型变量分配1个字节等等.被分配在内存的变量,可以通过地址去找到, ...

  8. 知道这两个 DOM 属性区别的,头发应该不多了吧?

    你可能知道,获取和设置 DOM 元素内部文本可以用这两个属性:Node.textContent 和 Element.innerText. 乍一看,它们似乎做着完全相同的事情,但它们之间有一些微妙但重要 ...

  9. 微信小程序(二十)-UI组件(Vant Weapp)-02使用

    1.按钮使用 https://vant-contrib.gitee.io/vant-weapp/#/button 1.全局引入,在app.json中引入组件 "usingComponents ...

  10. 在vscode中用Git管理项目

    1.新建仓库-->填写仓库名称-->一定要将对钩去掉-->公开-->创建 Git全局设置: git config --global --add user.name " ...