使用oracle序列+oracle定时任务获取每月从1开始的流水码
--创建序列
--入库
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开始的流水码的更多相关文章
- oracle 序列重置
问题一:怎样重置oracle序列 oracle序列创建以后,假设想重置序列从 0 開始,逐渐递增1,能够採用例如以下存储过程: create or replace procedure reset_se ...
- 一次获取多个oracle序列值
一次获取多个oracle序列值 学习了:http://blog.csdn.net/wangchsh2008/article/details/53495961 select seq_one.nextva ...
- oracle序列的创建和使用
oracle 序列的创建与使用 (2012-03-15 16:14:09) -------------------------------------------------------------- ...
- oracle序列中cache和nocache
首先我这篇博客的内容是我不知道oracle里的 cache 是什么,结果越查越多... "序列的cache通常为 20,但在需要依据序列值判断创建的先后顺序时必须是 NOCACHE" ...
- mysql实现oracle序列
mysql实现oracle序列的方案1.建表,表结构为:drop table if exists sequence; create table sequence ( seq_name VARCHAR( ...
- Oracle序列 与 基本函数介绍
目录 Oracle序列 与 基本函数介绍 常用词汇 数据字典(data dictionary:dd) oracle序列技术理解 账号管理 基本函数介绍及应用 海韵听心 PL/SQL Developer ...
- oracle 序列中cache 有什么用途
create sequence name increment by x //x为增长间隔 start with x //x为初始值 maxvalue x //x为最大值 minvalue x //x为 ...
- oracle序列
一.序列 序列是oracle用来生产一组等间隔的数值.序列是递增,而且连续的.oracle主键没有自增类型,所以一般使用序列产生的值作为某张表的主键,实现主键自增.序列的编号不是在插入记录的时候自动生 ...
- oracle 序列 详解
序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l 自动提供唯一的数值 l 共享对象 l 主要用于提供主键值 l 将序列值装入内存可以提高访问效率 创建序列: 1. 要有创建 ...
随机推荐
- μC/OS-III---I笔记6---互斥信号量
互斥信号量 操作系统中利用信号量解决进程间的同步和互斥(互斥信号量)的问题,在多道程序环境下,操作系统就是遮掩实现进程之间的同步和互斥.但是在使用的过程中厉害的前辈还是发现了这一优秀机制的缺陷,它会导 ...
- 智能广告投放平台 All in One
智能广告投放平台 All in One app demos 知之数据 一站式广告营销平台 https://hio.cn/ refs https://www.jonmellman.com/posts/p ...
- Worktile vs Teambition
Worktile vs Teambition 项目管理.团队协作 企业服务.协同办公 worktile 易成科技 北京易成星光科技有限公司 https://www.tianyancha.com/com ...
- 转换 React 为TypeScript
转换 React 为TypeScript JavaScript import React from 'react'; import PropTypes from 'prop-types'; class ...
- 微信小程序-云开发实战教程
微信小程序-云开发实战教程 云函数,云存储,云数据库,云调用 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/gettin ...
- 2019 front-end job Interview
2019 front-end job Interview 2019 前端面试题 掘金 https://juejin.im/tag/面试 https://juejin.im/post/5c875791e ...
- 源码分析:CyclicBarrier 之循环栅栏
简介 CyclicBarrier 是一个同步辅助工具,允许一组线程全部等待彼此达到共同屏障点,且等待的线程被释放后还可以重新使用,所以叫做Cyclic(循环的). 应用场景 比如出去旅行时,导游需要等 ...
- 解决bs4在python中出现“ImportError: cannot import name ‘HTMLParseError‘”错误
在使用BeautifulSoup4时候出现了ImportError: cannot import name 'HTMLParseError'的错误. 根本原因是BeautifulSoup在4.4.0以 ...
- ImportError: No module named _ssl解决方法
import ssl时出现ImportError: No module named _ssl错误是因为咱安装Python的时候没有把ssl模块编译进去导致的. 解决步骤: 系统没有openssl,手动 ...
- JavaFX桌面应用-版本升级
好久没有写博客,2021年就以 "JavaFX桌面应用-版本升级" 开篇吧,记录一下JavaFX应用版本升级的开发流程. 桌面应用升级的方案应该很多,这里只是自己想到的方案. 1. ...