oracle 随机数重复吗,Oracle生成不重复随机数
项目中要依据车牌号码、日期和随机码生成运单号,所以写了函数和创建了历史码存储表来保证运单号的不重复。
运单号=车牌号码+日期+四位随机码
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生成不重复随机数相关推荐
- python随机生成k个不重复的随机数_使用Python生成不重复的随机值
uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现,自带了uuid模块来进行uuid的生成和管理工作. python中的u ...
- php产生订单号不重复,php如何生成不重复订单号
php生成不重复订单号的方法:首先可以预先生成订单号:然后进行去重存起来:最后用的时候取一个出来用就行,代码为[$orderNo = date('YmdHis').substr(microtime() ...
- c++语言生成一个随机数,C/C++怎么生成“真正的”随机数
C/C++怎么生成"真正的"随机数 C语言中,直接用rand()函数生成随机数的话,会出现一个尴尬的局面,那就是每次运行都会生成相同的一个数,这显然不能满足我们的期望.怎么回事呢? ...
- java生成不重复的id_Java 生成永不重复的ID的代码
package com.hh.util; /** * * 创建数据库ID的通用方法. * @since JDK1.6 */ public class CreateID { private final ...
- python生成50个随机数_Python:如何生成12位随机数?
直截了当的方法有什么问题? >>> import random >>> random.randint(100000000000,999999999999) 5442 ...
- Shell 脚本生成不重复的随机数
#!/bin/bash #AUTHOR:AN #DATE:2019-3-24 #Describe:Generate No-Repeat Random-Number #Method:如生成3~7的随机数 ...
- 生成不重复的随机数的三种方法
下面我以生成1-10之间的10个不重复的随机数为例介绍生成不重复的随机数的三种方法: 1,通过while循环来实现 通过while循环不停的生成随机数,直到生成一个不重复的为止,这种方法比较容易想 ...
- java生成指数分布随机数_生成特定分布随机数的方法
生成随机数是程序设计里常见的需求.一般的编程语言都会自带一个随机数生成函数,用于生成服从均匀分布的随机数.不过有时需要生成服从其它分布的随机数,例如高斯分布或指数分布等.有些编程语言已经有比较完善的实 ...
- 【C语言】rand()函数(如何生成指定范围随机数)
一.rand()函数简介 我们先来看一下cplusplus.com - The C++ Resources Network网站上rand函数的基本信息: 系统生成随机数时需要使用rand函数(rand ...
最新文章
- StringBuilder类型的基本用法
- -webkit-gradient webkit内核浏览器的Linear Gradients (线性渐变) -Css3演示
- [JLOI2015]战争调度
- 数据库系统实训——实验二——单表查询
- 线性表:顺序栈算法实现
- Windows和Mac安装JDK及环境变量配置
- vSphere 7 Kubernetes 初体验
- 撞击测试软件,碰撞检测用什么软件?你会用Navisworks做碰撞检测吗?
- JavaScript -- DOM树
- 2017-07-12 周三 今日总结
- 凸优化有关的数值线性代数知识二:求解已经因式分解的矩阵的线性方程组
- python中提交post表单_python接口自动化二(发送post请求)
- Intellij IDEA问题解决合集
- 成功在中东和北非地区发布应用或游戏的 7 个技巧
- 【COS】函数使用技巧
- 北京市个人租房攻略,看完你就懂了
- sublime text3 英文版转为中文版
- 帝国CMS模板组创建和管理,让网站完成迅速”变脸“
- oracle强制停止执行,Oracle强制终止在执行的sql
- MultipartFile和File互转
热门文章
- 关于求XXX.class.getResource(xxx).getPath()的用法
- 10个问题带你全面理解Linux性能优化
- GCC(-pg) profile mcount | ftrace基础原理
- ZooKeeper分布式应用程序的分布式协调服务:概述,入门,发布版本
- Linux timeout命令的使用:timeout - run a command with a time limit
- python多线程下载_python3 多线程下载
- Python文件(一):文件类型、文件的打开,读取写入,关闭、文件备份、文件和文件夹的操作
- 抖音api开放平台对接_抖音新增酒店预订等功能,一只脚踏进美团、携程腹地
- clickhouse原理解析与应用实践 pdf_阿里专家分享内部绝密RocketMQ核心原理与最佳实践PDF...
- java 防重_如何做一个防重设计