精华内容
下载资源
问答
  • FLOOR(DBMS_RANDOM.VALUE(low IN NUMBER,high IN NUMBER) ); 转载于:https://www.cnblogs.com/zhjx0521/p/8491415.html

     

    FLOOR(DBMS_RANDOM.VALUE(low IN  NUMBER,high IN NUMBER) );

    转载于:https://www.cnblogs.com/zhjx0521/p/8491415.html

    展开全文
  • 存放随机数的表结构: create table COUPON_CODE ( ID NUMBER(22),--主键 CODE VARCHAR2(10),--随机数 USED VARCHAR2(2)--是否使用标识 ) 需求说明:生成1亿条随机数存放到code字段,字段id为主键,取值...
    存放随机数的表结构:
    
    create table COUPON_CODE
    (
    ID NUMBER(22),--主键
    CODE VARCHAR2(10),--随机数
    USED VARCHAR2(2)--是否使用标识
    )

    需求说明:生成1亿条随机数存放到code字段,字段id为主键,取值从1到1亿,要求code值为从1到1亿之间的随机数,且不能重复,code字段类型为字符,长度都固定为8位,不足的在左边补0.

    实现思路:每次插入一条数据,ID值和CODE值相同,同时计数器加1,再从已经插入的数据中取出一个随机ID,查出这个ID对应的CODE值,将最新插入的记录的CODE值与随机取得的记录的CODE值互换。

    测试结果:生成1W条随机数用时159s

    存储过程代码:
    create or replace procedure insert_random_couponCode(maxNum in number) is
    currentId number(9);
    randomId number(9);
    randomCode varchar2(9);
    currentCode varchar2(9);
    querySql varchar2(2000);
    updateSql varchar2(2000);
    type c_mycur is ref cursor;
    c_cur c_mycur;
    begin
    select max(id) into currentId from coupon_code;
    if(currentId is null)then
    insert into coupon_code(id,code)values(1,'00000001');
    commit;
    currentId:=1;
    end if;
    open c_cur for 'select t.id,t.code from coupon_code t';
    loop
    currentId:=currentId+1;
    currentCode:=trim(to_char(currentId,'09999999'));
    querySql:='select abs(mod(dbms_random.random,'||currentId||')) from dual';
    execute immediate querySql into randomId;
    if randomId=0 then
    randomId:=1;
    end if;
    querySql:='select t.code from coupon_code t where t.id='||randomId;
    execute immediate querySql into randomCode;
    updateSql:='begin insert into coupon_code(id,code)values('||currentId||','''||randomCode||''')'||
    ';update coupon_code set code='''||currentCode||''' where id='||randomId||';end;';
    execute immediate updateSql;
    commit;
    exit when currentId=maxNum;
    end loop;
    close c_cur;
    dbms_output.put_line('finished !');
    exception
    when others then
    rollback;
    dbms_output.put_line('exception!!!');
    end insert_random_couponCode;
    展开全文
  • Oracle生成随机数

    千次阅读 2018-11-23 11:41:53
    -- 38位精度的随机数 例如:2080.540270297243047172097413955732485122 select dbms_random.value(1,9999) from dual; --四位数,取整 select trunc(dbms_random.value(1000,9999)) from dual; --按照指定的精度...

    -- 38位精度的随机数 例如:2080.540270297243047172097413955732485122

    select dbms_random.value(1,9999) from dual;

    --四位数,取整

    select trunc(dbms_random.value(1000,9999)) from dual; --按照指定的精度截取一个数

    select round(dbms_random.value(1000,9999)) from dual; --按照指定的精度进行四舍五入

    select ceil(dbms_random.value(1000,9999)) from dual;  --ceil返回大于或等于,给出数字的最小整数

    select floor(dbms_random.value(1000,9999)) from dual;  --floor取整数位

    select dbms_random.value from dual; --dbms_random.value小数(0-1

    select dbms_random.value(0,100) from dual; 小数(0-100

    select substr(cast(dbms_random.value as varchar(38)),3,20) from dual; --长度为20的随机字串

    select dbms_random.normal from dual;  --正态分布随机数

    select dbms_random.string('x',3) from dual; --随机字符串

    select dbms_random.string('A',20) from dual;--string函数指定长度为20的随机文本字符串

    select to_date(2454084+trunc(dbms_random.value(0,365)),'J') from dual; --随机日期

    select to_char(sysdate,'J') from dual; --指定日期基数

    select sys_guid() from dual;--生成GUID

    select to_char(to_date('01/01/03','mm/dd/yy'),'J') from dual;--2452641

    select to_date(trunc(dbms_random.value(2452641,2452641+364)),'J') from dual;--2003年内的任意日期

    展开全文
  • 1.存储过程 CREATE OR REPLACE PROCEDURE GETRAND(RAND_TYPE IN VARCHAR, RAND_CODE OUT VARCHAR) AS I INTEGER := 0; PRE0 VARCHAR2(50); --补0字符串 PRELENGTH...

    主要是练习下存储过程,实际项目中这么写就太复杂了。

    1.存储过程

    CREATE OR REPLACE PROCEDURE GETRAND(RAND_TYPE IN VARCHAR,
                                        RAND_CODE OUT VARCHAR) AS
      I          INTEGER := 0;
      PRE0       VARCHAR2(50); --补0字符串
      PRELENGTH  INTEGER; --补0个数
      CODELENGTH INTEGER; --随机数位数
      V_CODE     VARCHAR2(50); --随机数
      V_DIGIT    NUMBER; --需要生成的随机数的位数
    BEGIN
      SELECT R.CODE, R.DIGIT
        INTO V_CODE, V_DIGIT
        FROM CM_RAND R
       WHERE R.TYPE = RAND_TYPE;
    
      V_CODE := V_CODE + 1;
      --当更新的code位数大于随机数的最大位数时,从1开始
      CODELENGTH := LENGTH(V_CODE);
      IF (CODELENGTH > V_DIGIT) THEN
        V_CODE     := 1;
        CODELENGTH := 1;
      END IF;
    
      --生成的随机数位数不足时,补0
      IF (CODELENGTH < V_DIGIT) THEN
        PRELENGTH := V_DIGIT - CODELENGTH;
        FOR I IN 1 .. PRELENGTH LOOP
          PRE0 := PRE0 || '0';
        END LOOP;
      END IF;
    
      --更新code字段
      V_CODE := PRE0 || V_CODE;
      UPDATE CM_RAND SET CODE = V_CODE WHERE TYPE = RAND_TYPE;
      SELECT V_CODE INTO RAND_CODE FROM DUAL;
    END;
    

    2.数据库表

    create table CM_RAND
    (
      ID     NUMBER not null,
      type      VARCHAR2(50) not null,
      code      VARCHAR2(50) not null,
      digit     NUMBER not null
    );
    -- Add comments to the table 
    comment on table CM_RAND
      is '随机数表';
    -- Add comments to the columns 
    comment on column CM_RAND.id
      is '主键';
    comment on column CM_RAND.type
      is '类型';
    comment on column CM_RAND.code
      is '当前随机数,0001、0002、0003……';
    comment on column CM_RAND.digit
      is '生成几位随机数';
      
    

    在这里插入图片描述

    3.entity

    /**  
     * @Description: 随机数表
     */
    public class RandEntity {
    
    	private int id;//主键
    	private String type;//类型
    	private String code;//当前随机数,如0001、0002、0003……
    	private int digit;//生成几位随机数
    	
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getType() {
    		return type;
    	}
    	public void setType(String type) {
    		this.type = type;
    	}
    	public String getCode() {
    		return code;
    	}
    	public void setCode(String code) {
    		this.code = code;
    	}
    	public int getDigit() {
    		return digit;
    	}
    	public void setDigit(int digit) {
    		this.digit = digit;
    	}
    	
    	
    }
    
    

    4.service

    	/**
    	 * @Description:生成随机数
    	 * @param string 类型
    	 */
    	public synchronized String getRand(String type) {
    		RandEntity randEntity = new RandEntity();
    		randEntity.setType(type);
    		randDao.getRand(randEntity);
    		return randEntity.getCode();
    	}
    

    5.dao

    /**  
     * @Description: 生成随机数DAO
     */
    public interface RandDao {
    
    	/**
    	 * @Description:生成随机数
    	 * @param type
    	 */
    	public void getRand(RandEntity randEntity);
    	
    }
    

    6.mapper

    	<!-- 生成随机数 -->
    	<select id="getRand" parameterType="com.entity.rand.RandEntity" statementType="CALLABLE" useCache="false">
    		{call getRand(
    	        #{type,mode=IN,jdbcType=VARCHAR},
    	        #{code,mode=OUT,jdbcType=VARCHAR}
    	    )}
    	</select>
    
    展开全文
  •   业务需求: ... 若考虑到一条一条 插入,就想到了Oracle 存储过程游标这一功能   技术实现:  第一步: 创建函数,自动生成UUID 32位 CREATE OR REPLACE -- 创建一个函数function,返...
  • oracle 存储过程运算符

    千次阅读 2019-01-02 11:26:00
    存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。 运算符和表达式 关系运算 =等于<>,!=不等于<小于>大于<=小于等于>=大于等于 一般...
  • Oracle 存储过程 Array

    2017-09-23 17:35:56
    联合数组/索引表:没有 extend,随机数 嵌套标 :必须要 extend,必须从1开始递增 变长数组 :必须要 extend,必须从1开始递增 个数限制 联合数组/索引表:无限制 嵌套标 :无限制 变长数组 ...
  • 今天遇到个问题关于随机数函数
  • 存储过程生成流水号是很常用的,这里以生成订单编号的流水号作为示例。(新的一天的流水号从1开始,如:今天的订单编号是CD2013010900014,下一个订单编号将是CD2013010900015;明天的订单编号将从CD2013011000001...
  • Oracle之DBMS_RANDOM 包的使用例子create or replace procedure PRO_AUTO__PM(CODE_NO_OUT OUT VARCHAR2) is --自动生成编号,规则(年月+5位随机数+7位流水号) codeNum number; codeNumLen number; codeNumPC ...
  • 存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。 运算符和表达式     关系运算 =等于 >大于 >=大于等于       ...
  • oracle 存储过程 instr 函数

    千次阅读 2013-04-26 16:59:43
    --获得一个随机数  3、得到序列的下一个值或当前值,用下面语句  select your_sequence.nextval from dual;--获得序列your_sequence的下一个值  select your_sequence.currval from dual;--获得序列your_...
  • 在做性能测试等场景时需要生成大量的仿真数据,使用存储过程可以快速解决此问题。 我的数据库版本为Oracle11g,PL/SQL版本为7.0.1.1066,操作系统版本为Win7旗舰版。 首先有一个表player_info结构如下: -- 创建...
  • 如题,取纯数字的随机数 oracle有内置函数,简单加入处理就可以了 但是数字和字母混合的随机数 不好处理 忘各位指点!
  • oracle生成不重复随机数

    万次阅读 2012-11-16 15:17:48
    1.创建FUNCTION fn_ifrandom(其中用到递归) CREATE OR REPLACE FUNCTION fn_ifrandom (tmpallrandom IN clob,tmprandom IN VARCHAR2,allcount in number) ...IS --生成不重复的随机数 randomchar varchar2(5);
  • 介绍如何在 Oracle 数据库中使用系统程序包 DBMS_RANDOM 生成随机数据,包括随机数字、验证码、随机字符串以及随机日期和时间等,同时还介绍了如何从表中返回随机记录,以及如何生成 UUID。
  • oracle、plsql利用数组实现存储过程随机生成姓名、字符串、地址、随机数 如何用存储过程生成集合...看一下就明白,如何用集合生成随机字符串,如何用存储过程调用,如何声明存储过程数组
  • 查看表里面的数据,2020年每天对应的随机数number_s 步骤二 用分析函数 first_value和last_value 得到每月花费最多和最少的是哪一天,用month_ch作为分组字段,得到first_value(number_s) SELECT year_ch,month_ch,...
  • a、 在Oracle中的存储过程又名子程序; b、 命名的PL/SQL块,编译并存储在数据库中; c、 存储过程的各个部分: 声明部分; 可执行部分; 异常处理部分(可选)。 d、存储过程的分类: 过程-执行某些操作; 函数-执行...
  • 在你的工作中是否会为了... 如果是的话,可以用oracle里生成随机数的PL/SQL, 目录文件名在:/ORACLE_HOME/rdbms/admin/dbmsrand.sql。 用之前先要在sys用户下编译: SQL>@/ORACLE_HOME/rdbms/admin/dbmsrand.sql 
  • oracle 存储过程教程

    万次阅读 2012-04-01 16:15:05
    存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。 --------------------基本语法-------------------- 一.创建存储过程 create procedure sp_name() begin .....
  • oracle存储过程

    2018-10-16 14:28:45
    oracle存储过程 第一步:建立相关数据表 第二步:创建存储过程 代码如下: create or replace procedure SET_MAGICCUBE_NEWS_LOOKS_NUMS is –声明随机数变量 PARAM_RUNDOM_NUM NUMBER(4); –定义游标 查询当天审核...
  • 原文地址:SQLServer和Oracle存储过程区别,常用函数对比作者:创造卓越     SQL server 与Oracle开发比较  本文档主要从oracle与sql server语法上进行差异性比较,诸如两者在管理,性能,优化等方面...
  • --建立存储过程的语法:存储过程中可以接收的参数类型: in类型为输入类型的参数, out类型为输出类型的参数。 create [or replace] PROCEDURE 过程名(参数列表) AS PLSQL子程序体 --创建无输入参数无输出参数...
  • --该存储过程每30s执行,系统秒数在30秒以内为00s --30--59s是30s CREATE OR REPLACE PROCEDURE insert_test2_pro AS actual_s NUMBER;--实时秒数 actual_date VARCHAR2(30);--实际时间 BEGIN SELECT to_char...
  • 3、创建存储过程 CREATE OR REPLACE PROCEDURE GETPK( ATABLENAME VARCHAR, AFIELDNAME VARCHAR, APKVALUE OUT NUMBER) IS COUNTNUM NUMBER; MKEY NUMBER; TTABLENAME VARCHAR(50); TFIELDNAME VARCHAR(50)...
  • oracle 存储过程语法

    2017-03-08 17:42:20
    -- 存储过程语法结构 create [or replace] procudure(存储过程关键字) pro_name(自定义存储过程名称) (argument1 datatype,.....) is[as] 声明 begin ... exception ... end; select * from emp2...
  • SQLServer和Oracle存储过程区别,常用函数对比(二) 2012-07-25 17:00 三.變量與常量 Pl/sql变量与常量可以具有属性,支持的属性类型有 %type,%rowtype

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,003
精华内容 2,801
关键字:

oracle存储过程随机数