首页 > 数据库 >oracle 存储过程

oracle 存储过程

时间:2024-03-12 20:46:57浏览次数:23  
标签:存储 01 string random value 生成 2021 oracle 过程

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

相关文章

  • Elasticsearch 如何保证写入过程中不丢失数据的
    丢失数据的本质在本文开始前,首先明白一个点,平时我们说的组件数据不丢失究竟是在指什么,如果你往ES写入数据,ES返回给你写入错误,这个不算数据丢失。如果你往ES写入数据,ES返回给你成功,但是后续因为ES节点重启或宕机导致写入的数据不见了,这个才叫数据丢失。简而言之,丢失数据的本质是E......
  • Hive-源码分析一条hql的执行过程
    一、源码下载 下面是hive官方源码下载地址,我下载的是hive-3.1.3,那就一起来看下吧https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-src.tar.gz二、上下文<Hive-源码带你看hive命令背后都做了什么>博客中已经讲到了hive命令执行后会一直循环处理控制台输入的hq......
  • YUNBEE云贝-热烈祝贺Guo同学成功通过Oracle 19c OCP认证考试!
    恭喜Guo同学在#Oracle19cOCP考试中取得了OCP证书!该认证是Oracle公司的权威技术标准,适用于有资格为Oracle核心产品提供服务和支持的专业人员。尽管OCP认证考题随着版本变化,并且是全英文考试,对中文习惯的人来说有一定的难度,但是在云贝考OCP则相对容易,因为它有专门的OCP课程和......
  • 视频监控/云存储EasyCVR视频融合平台设备增删改操作不生效是什么原因?
    国标GB28181协议EasyCVR安防平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,平台支持7*24小时实时高清视频监控,能同时播放多路监控视频流,视频画面1、4、9、16个可选,支持自定义......
  • etcd每个节点都存储了完整的键值对数据集,为什么扩容etcd集群仍可分散存储压力?
    etcd每个节点都存储了完整的键值对数据集,这主要是为了确保数据的一致性和高可用性。在这种设计下,任何一个节点都可以处理读取请求,并在本地提供数据,从而无需跨节点通信。这种冗余的数据存储方式也增加了系统的容错性,因为即使部分节点发生故障,其他节点仍然可以提供完整的数据集。然......
  • typeorm mysql blob 存储base64
    typeormmysqlblob存储base64在TypeORM中,要将Base64数据存储到MySQL数据库的BLOB字段,您需要先将Base64字符串转换为Buffer,然后使用TypeORM的实体管理器来保存。以下是一个简单的例子:首先,定义您的实体:  import{Entity,PrimaryGeneratedColumn,Column}from......
  • oracle系统表查询SQL语句
    oracle查询用户下的所有表select*fromall_tab_comments--查询所有用户的表,视图等select*fromuser_tab_comments   --查询本用户的表,视图等select*fromall_col_comments--查询所有用户的表的列名和注释.select*fromuser_col_comments--查询本用户的表的列......
  • oracle列转行
    转自:https://www.cnblogs.com/Mr_JinRui/archive/2011/05/27/2060109.html oracle列转行 1.新建一个名为TEST表2.向TEST表中添加数据INSERTINTOTEST(STUDENT,COURSE,SCORE)select'张三','语文',78fromdualunionselect'张三','数学',87fromdua......
  • STM32 LwIP学习过程问题总结(一):LwIP ping不通,抓包发现ICMP校验和为0x0000
    一、问题今天在将之前的STM32LwIP1.4.1版本程序移植到2.1.2版本上时,发现ping不同,但是开发板有ICMP回复包,黄颜色警告checksum为0x0000。说明LwIP移植应该是没问题,数据处理这一块出错了。 在网上找了下相关的错误,ST论坛有个问题和我这个一样。HardwareIPv4checksumonanST......
  • Oracle - 那些年使用的emp表和dept表
     那些年在学习编程时,Oracle自带的emp表和dept表,本文进行整理和记录,以便于在今后的学习和工作中作为示例数据。  雇员表(emp)CREATETABLEEMP( EMPNONUMBER(4)NOTNULL,--雇员编号,由四个数字组成。 ENAMEVARCHAR2(10),--雇员姓名,由10个字符组成。 JOBVARCHAR2(......