create or replace procedure inst_XXX is
i int; --定义变量
internal_key number(15);
seq_no varchar2(35);
barnch varchar2(8);
begin --开始
i:=1;---变量赋值
internal_key:=1;
while i<100000 LOOP; ---while循环
seq_no:='A' || TO_CHAR(i); ---字符拼接用 || int 转字符TO_CHAR()
barnch:=TO_CHAR(FLOOR(DBMS_RANDOM.value(0,99999999))); ----FLOOR()向下取整 DBMS_RANDOM()随机函数
inster int XXXXXXX; ---SQL 逻辑
commit;
internal_key:=internal_key+1;--变量运算
i:=i+1;
end LOOP; --循环结束
end;
begin inst_XXX; end; ---存储过程执行
-------------------------补充
dbms random是一个可以生成随机数值或者字符串的程序包。这个包有initialize()、seed0)、 terminate)、 value()、normal0)
random()、string()等几个函数。
1.dbms_random.value方法
value()是最常用的,value()的用法一般有两种:
第一 种function value return number;
这种用法没有参数,会返回一个具有38位精度的数值,范围从0.0到1.0,但不包括1.0
第二种value带有两个参数,第一个指下限,第二个指上限,将会生成下限到上限之间的数字,但不包含上限
2.dbms_random.string 方法
第一个参数的含义:
■ ‘u’, ‘U’ - returning string in uppercase alpha characters
■ ‘l’, ‘L’ - returning string in lowercase alpha characters
■ ‘a’, ‘A’ - returning string in mixed case alpha characters
■ ‘x’, ‘X’ - returning string in uppercase alpha-numeric characters
■ ‘p’, ‘P’ - returning string in any printable characters. Otherwise the returning string is in uppercase alpha
characters.
P 表示 printable,即字符串由任意可打印字符构成
而第二个参数表示返回的字符串长度。
3.dbms_random.random 方法
random返回的是BINARY_INTEGER类型值,产生一个任意大小的随机数
random生成一个从-power(2,31)到power(2,31)的整数值,注意,区间为左闭右开
4.dbms_random.normal方法
NORMAL函数返回服从正态分布的一组数。此正态分布标准偏差为1,期望值为0。这个函数返回的数值中有68%是介于-1与+1之间,95%介于-2与+2之间,99%介于-3与+3之间。
5.dbms_random.seed方法
用于生成一个随机数种子,设置种子的目的是可以重复生成随机数,用于调试。否则每次不同,难以调度。
6.随机日期
生成一个2021年内的任意日期:
分析:2021年内的任意日期,即日期范围是(2021-01-01, 2021-12-31)
可以转化为 2021-01-01 + (0, 365),
其中,2021-01-01 就是指定日期, (0, 365) 就是指定范围
首先确定2021年1月1日的日期整数:
select to_char(to_date(‘2021-01-01’, ‘yyyy-MM-dd’), ‘J’) from dual;
系统给的结果是: 2459216
生成指定范围[min_value, max_value]内的随机日期:
select to_date(2459216+ trunc(DBMS_RANDOM.VALUE(0, 365)), ‘J’) from dual;
生成随机日期+时间 ,生产2015年1月1日到2015年12月31日之间的日期。
7.生成GUID
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。
Oracle8i引入了SYS_GUID这个概念,它同Oracle管理员所使用的传统的序列(sequence)相比具有诸多优势。一个序列生成器只是简单地创建从给定的起点开始的一系列整数值,而且它被用在选择陈述式的时候自动地递增该系列。
序列生成器所生成的数字只能保证在单个实例里是唯一的,这就不适合将它用作并行或者远程环境里的主关键字,因为各自环境里的序列可能会生成相同的数字,从而导致冲突的发生。SYS_GUID会保证它创建的标识符在每个数据库里都是唯一的。
标签:存储,01,string,random,value,生成,2021,oracle,过程 From: https://www.cnblogs.com/KL2016/p/18069144