`
王牌海盗
  • 浏览: 239174 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle中流水号的生成

阅读更多

最近在做一个任务管理系统,任务表ID被设计成流水号的形式(方便其子任务的查询统计),准备以当天的日期+当天最大任务数量组成。

java 代码
  1. public static String getNo(){    
  2. long No = 0;    
  3. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");    
  4. String nowdate = sdf.format(new Date());    
  5. No = Long.parseLong(nowdate)*1000;   
  6. No+=getTaskNo();    
  7. return getUserId+No;    
  8. }    
  9. public static int getTaskNo(){//返回当天的任务数+1    
  10. return 001;    
  11. }    

日期后面的递增值想通过oracel序列来获得,从网上找了个重置序列的存储过程

sql 代码
  1. SQL> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;   
  2.   
  3. 序列已创建。   
  4. SQL> create or replace procedure seq_reset(v_seqname varchar2) as  
  5.   2  n number(10);   
  6.   3  tsql varchar2(100);   
  7.   4  begin  
  8.   5  execute immediate 'select '||v_seqname||'.nextval from dual' into n;   
  9.   6  n:=-(n-1);   
  10.   7  tsql:='alter sequence '||v_seqname||' increment by '|| n;   
  11.   8  execute immediate tsql;   
  12.   9  execute immediate 'select '||v_seqname||'.nextval from dual' into n;   
  13.  10  tsql:='alter sequence '||v_seqname||' increment by 1';   
  14.  11  execute immediate tsql;   
  15.  12  end seq_reset;   
  16.  13  /   
  17.   

创建一个JOB,让其每天零点的时候调用重置序列的过程

sql 代码
  1. declare      
  2.       job1   integer;      
  3. begin      
  4.       sys.dbms_job.submit(job1 ,  'PROCEDURE__NAME(参数);', to_date('20050603   01:00:00',   'yyyymmdd   hh24:mi:ss'), --   计划的初次执行日期,请根据具体情况设定      
  5.     'to_date(to_char(sysdate+1,''yyyymmdd'')||''01:00:00'',''yyyymmdd   hh24:mi:ss'')');      
  6.       commit;      
  7.   end;      
分享到:
评论

相关推荐

    Oracle 中生成流水号的方法

    在Oracle数据库中,生成流水号是一项常见的需求,特别是在创建序列或者需要唯一标识的场景下。以下将详细解释如何在Oracle中实现这一功能。 首先,我们需要一个专门用来存储流水号的表,例如`HP_NO`,它包含三个...

    oracle(plsql)生成流水号

    在业务系统中,经常需要生成唯一的流水号或序列号,这在处理订单、发票、工单等事务时尤其重要。`fn_no_make` 函数就是一个用PL/SQL编写的示例,专门用于生成带有特定前缀、日期和顺序编号的流水号。 首先,我们来...

    自动生成流水账号的存储过程 格式为 年月日+’0001‘

    用于自动生成流水账号的存储过程 有详细的注释

    Oracle/MySQL以当前日期加顺番 生成编号

    //生成最大编号 规则为当前日期+6位顺番, //没有记录时,当前日期+000001 //当前日期比从数据库取得的最大日期大时, 当前日期+000001 //当前日期等于从数据库取得最大日期,顺番+1

    new_no.rar_Noé 1_流水号

    在数据库设计中,选择合适的流水号生成策略是很关键的。例如,如果业务需求是全局唯一的流水号,可能还需要结合时间戳或者其他信息来生成,防止并发插入时出现重复。此外,如果数据量大,要考虑如何避免流水号过大...

    Oracle生成单据编号存储过程的实例代码

    Oracle生成单据编号存储过程,在做订单类似的系统都可能会存在订单编号不重复,或是流水号按日,按年,按月进行重新编号。 可以参考以下存储过程 CREATE OR REPLACE procedure Pro_GetBillNO(TypeTable in varchar2...

    oracle 不用新建序列 重置序列(从1开始增长)

    在Oracle数据库管理中,序列是一种常用的对象,用于自动产生唯一的数值。序列通常被用来作为主键或唯一标识符,特别是在自动生成记录ID时。然而,有时候我们可能需要重置序列,使其从特定值开始,例如从1开始增长,...

    oracle 10进制转34进制 sql

    一个SQL脚本函数,10进制转换为34进制。34进制指以0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、G、H、J、K、L、M、N、P、Q、R、S、T、U、V、W、X、Y、Z为基数做累加。

    oracle中sequence介绍及应用

    Sequence常用于为表中的某列自动生成唯一的主键值或者作为流水号使用。 #### 二、Sequence的创建与基本属性 ##### 创建Sequence的基本语法如下: ```sql CREATE SEQUENCE [start WITH n] -- 开始位置,默认递增...

    oracle字段自增长

    在 Java 编程过程中,这种机制可以用来生成唯一的序号,例如订单号、流水号等。 在 Oracle 10g 中,实现字段自增长需要经过以下步骤: 1. 创建表:create table list(id number, name varchar2(50)); 这里创建...

    oracle 12c数据库管理

    不过,提供的内容并没有直接涉及到Oracle 12c数据库管理的具体知识点,而是包含了一些推广信息,提示用户可以联系QQ号获取IT类书籍PDF下载链接。这些信息与我们需要生成的知识点无关,因此我将直接从标题和描述中...

    Oracle主键自增的办法

    在 Oracle 数据库中,与许多其他关系型...这种方法适用于那些需要自动生成唯一标识符的情况,比如主键或业务流水号。需要注意的是,虽然这种方法很实用,但在高并发环境下可能需要考虑序列值的并发问题,以及性能优化。

    6.2、oracle 相关sql1

    ` 这个查询,它将当前日期(`SYSDATE`)转换为字符串(`TO_CHAR(SYSDATE, 'yyyymmdd')`),并结合一个流水号序列(`Flow_NO_SEQUENCE.Nextval`)和零填充,生成一个格式化的字符串。这种方式常用于创建具有日期和...

    oracle sql培训讲义

    在生成连续流水号的场景下,如果不使用锁,可能会在高并发环境中出现数据不一致。示例代码展示了在没有锁定的情况下,可能存在的并发问题,以及如何通过`FOR UPDATE`子句获取行锁,确保在锁定状态下进行流水号的生成...

    基于Oracle数据库存储过程与触发器的应用.pdf

    在某些业务系统中,如项目管理、案件受理等,流水号的自动生成不仅关系到数据的组织效率,也影响到数据的一致性和准确性。例如,文章中给出的创建示例,通过触发器实现`acceptcaseb`表中记录的自动编号,确保了流水...

    Oracle SQL培训讲义

    一个典型的应用例子是在生成连续流水号时,使用FOR UPDATE子句可以确保在并发操作中正确生成唯一编号。 5. **性能优化**: - 了解如何通过索引、物化视图、分区和并行查询等技术来提升查询性能,同时避免全表扫描...

    ORACLE 正数转换为字符串如何去掉前导空格

    在进行数据处理时,经常需要生成长度一致的流水号,例如在创建订单时可能会使用到当天的四位数字作为流水号。例如,如果当天是第一条记录,则需要将数字“1”转换成“0001”。然而,在Oracle数据库中使用`TO_CHAR(1,...

Global site tag (gtag.js) - Google Analytics