项目中要依据车牌号码、日期和随机码生成运单号,所以写了函数和创建了历史码存储表来保证运单号的不重复。

运单号=车牌号码+日期+四位随机码

1、创建历史运单号存储表(用来比对新生成的随机号是否已被使用)

-- Create table

create table RANDOM_NUMBER

(

RANDOMNUMBER NVARCHAR2(50) not null,

PLATENNUMBER NVARCHAR2(50) not null,

ADDDATE      DATE default SYS_EXTRACT_UTC(SYSTIMESTAMP) not null

)

tablespace WMWHSE1_DATA

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 64K

next 1M

minextents 1

maxextents unlimited

);

--------------------------------------------------------------------------

2、创建生成随机码函数

CREATE OR REPLACE FUNCTION fn_ifrandom (plateNnumber1 IN VARCHAR2)

RETURN varchar2

IS  --生成不重复的随机数

PRAGMA AUTONOMOUS_TRANSACTION;

randomchar varchar2(50);  --最终返回的不重复的随机数

randomchar1 varchar2(50);

ifrandom number;  --循环生成随机数时,判断是否是重复随机数

BEGIN

--判断是否是重复随机数,是则ifrandom>0,否则ifrandom=0

select plateNnumber1||to_char(sysdate,'yymmdd')||lpad(round(dbms_random.value(1,1000)),4,0) into randomchar  from dual;

select count(*) into ifrandom from Random_Number t where t.platennumber = plateNnumber1

and t.randomnumber = randomchar

and to_char(ADDDATE,'yyyy-mm-dd') = to_char(sysdate,'yyyy-mm-dd');

if ifrandom>0 then --重复了,再生成  递归

randomchar := fn_ifrandom(plateNnumber1);

else

insert into Random_Number(RandomNumber,plateNnumber,ADDDATE)values(randomchar,plateNnumber1,sysdate);

commit;

end if;

RETURN randomchar;

END fn_ifrandom;

--------------------------------------------------------------------------------

3、调用函数

select fn_ifrandom(’车牌号码‘) from dual

第二种Oracle生成随机数的方式,可以通过Oracle序列来生成

第一步创建序列

create sequence QC_setting_detail_Seq

minvalue 1

maxvalue 9999999999999999999999999999

start with 1

increment by 1

cache 20;

第二步生成指定位数的序列

select Lpad(QC_setting_detail_Seq.Nextval,10,0) from dual;

oracle 随机数重复吗,Oracle生成不重复随机数相关推荐

  1. python随机生成k个不重复的随机数_使用Python生成不重复的随机值

    uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现,自带了uuid模块来进行uuid的生成和管理工作. python中的u ...

  2. php产生订单号不重复,php如何生成不重复订单号

    php生成不重复订单号的方法:首先可以预先生成订单号:然后进行去重存起来:最后用的时候取一个出来用就行,代码为[$orderNo = date('YmdHis').substr(microtime() ...

  3. c++语言生成一个随机数,C/C++怎么生成“真正的”随机数

    C/C++怎么生成"真正的"随机数 C语言中,直接用rand()函数生成随机数的话,会出现一个尴尬的局面,那就是每次运行都会生成相同的一个数,这显然不能满足我们的期望.怎么回事呢? ...

  4. java生成不重复的id_Java 生成永不重复的ID的代码

    package com.hh.util; /** * * 创建数据库ID的通用方法. * @since JDK1.6 */ public class CreateID { private final ...

  5. python生成50个随机数_Python:如何生成12位随机数?

    直截了当的方法有什么问题? >>> import random >>> random.randint(100000000000,999999999999) 5442 ...

  6. Shell 脚本生成不重复的随机数

    #!/bin/bash #AUTHOR:AN #DATE:2019-3-24 #Describe:Generate No-Repeat Random-Number #Method:如生成3~7的随机数 ...

  7. 生成不重复的随机数的三种方法

    下面我以生成1-10之间的10个不重复的随机数为例介绍生成不重复的随机数的三种方法: 1,通过while循环来实现   通过while循环不停的生成随机数,直到生成一个不重复的为止,这种方法比较容易想 ...

  8. java生成指数分布随机数_生成特定分布随机数的方法

    生成随机数是程序设计里常见的需求.一般的编程语言都会自带一个随机数生成函数,用于生成服从均匀分布的随机数.不过有时需要生成服从其它分布的随机数,例如高斯分布或指数分布等.有些编程语言已经有比较完善的实 ...

  9. 【C语言】rand()函数(如何生成指定范围随机数)

    一.rand()函数简介 我们先来看一下cplusplus.com - The C++ Resources Network网站上rand函数的基本信息: 系统生成随机数时需要使用rand函数(rand ...

最新文章

  1. StringBuilder类型的基本用法
  2. -webkit-gradient webkit内核浏览器的Linear Gradients (线性渐变) -Css3演示
  3. [JLOI2015]战争调度
  4. 数据库系统实训——实验二——单表查询
  5. 线性表:顺序栈算法实现
  6. Windows和Mac安装JDK及环境变量配置
  7. vSphere 7 Kubernetes 初体验
  8. 撞击测试软件,碰撞检测用什么软件?你会用Navisworks做碰撞检测吗?
  9. JavaScript -- DOM树
  10. 2017-07-12 周三 今日总结
  11. 凸优化有关的数值线性代数知识二:求解已经因式分解的矩阵的线性方程组
  12. python中提交post表单_python接口自动化二(发送post请求)
  13. Intellij IDEA问题解决合集
  14. 成功在中东和北非地区发布应用或游戏的 7 个技巧
  15. 【COS】函数使用技巧
  16. 北京市个人租房攻略,看完你就懂了
  17. sublime text3 英文版转为中文版
  18. 帝国CMS模板组创建和管理,让网站完成迅速”变脸“
  19. oracle强制停止执行,Oracle强制终止在执行的sql
  20. MultipartFile和File互转

热门文章

  1. 关于求XXX.class.getResource(xxx).getPath()的用法
  2. 10个问题带你全面理解Linux性能优化
  3. GCC(-pg) profile mcount | ftrace基础原理
  4. ZooKeeper分布式应用程序的分布式协调服务:概述,入门,发布版本
  5. Linux timeout命令的使用:timeout - run a command with a time limit
  6. python多线程下载_python3 多线程下载
  7. Python文件(一):文件类型、文件的打开,读取写入,关闭、文件备份、文件和文件夹的操作
  8. 抖音api开放平台对接_抖音新增酒店预订等功能,一只脚踏进美团、携程腹地
  9. clickhouse原理解析与应用实践 pdf_阿里专家分享内部绝密RocketMQ核心原理与最佳实践PDF...
  10. java 防重_如何做一个防重设计