暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

羲和(Halo)数据库——DBMS_RANDOM浅尝

原创 小满未满、 2024-01-10
28843

在ORACLE中DBMS_RANDOM用于生成随机数、随机字符串等。接下来将简要介绍下DBMS_RANDOM该如何使用。

一、DBMS_RANDOM

ORACLE 19c中,关于DBMS_RANDOM各个子程序简要说明如下表所示:

子程序名 FUNCTION/PROCEDURE 功能 返回类型 状态
INITIALIZE PROCEDURE 使用输入的种子值初始化包 - ORACLE已弃用、不推荐使用,仅用于向后兼容
NORMAL FUNCTION 返回正态分布中的随机值 NUMBER 正常使用
RANDOM FUNCTION 生成一个随机整数,生成区间为 [-2^^31, 2^^31] BINARY_INTEGER ORACLE已弃用、不推荐使用,仅用于向后兼容
SEED PROCEDURE 使用输入的种子值重置原先的种子 - 正常使用
STRING FUNCTION 获取随机的字符串 VARCHAR2 正常使用
TERMINATE PROCEDURE 终止包 - ORACLE已弃用、不推荐使用,仅用于向后兼容
VALUE FUNCTION 如不提供low、hign参数,那么返回随机数值大于等于0,小于1。如提供low、hign参数那么返回随机数值大于等于low,小于hign。 NUMBER 正常使用


二、详细介绍

  1. INITIALIZE

    注意:此过程在ORACLE 11g 中已弃用,虽然支持,但不推荐使用,仅用于向后兼容

    -- DBMS_RANDOM.INITIALIZE (val  IN  BINARY_INTEGER);
    -- 功能:用于初始化包
    -- 参数:val 随机数种子
    -- 无返回值
    -- 调用
    CALL dbms_random.initialize(1);
    
    复制
  2. NORMAL

    -- DBMS_RANDOM.NORMAL RETURN NUMBER;
    -- 用于获取符合正态分布的随机值
    -- 无参数
    -- 返回正态分布中的随机值
    -- 调用
    SELECT dbms_random.normal FROM dual; 
    
    复制
  3. RANDOM

    注意:此过程在ORACLE 11g 中已弃用,虽然支持,但不推荐使用,仅用于向后兼容

    -- DBMS_RANDOM.RANDOM RETURN binary_integer;
    -- 功能:用于获取随机整数值
    -- 无参数
    -- 返回大于等于 -power(2,31)且小于power(2,31)的随机整数
    -- 调用
    SELECT dbms_random.random FROM dual; 
    
    复制
  4. SEED

    -- DBMS_RANDOM.SEED (val  IN  BINARY_INTEGER);
    -- DBMS_RANDOM.SEED (val  IN  VARCHAR2);
    -- 功能:用于重置种子
    -- 参数:val 随机数种子
    -- 无返回值
    -- 调用
    CALL dbms_random.seed(100);
    
    复制
  5. STRING

    -- DBMS_RANDOM.STRING(opt  IN  CHAR, len  IN  NUMBER) RETURN VARCHAR2;
    -- 功能:用于获取随机字符串
    -- 参数:opt 指定返回字符串的格式:
    -- 'u', 'U' - 以大写字母字符返回字符串
    -- 'l', 'L' - 以小写字母字符返回字符串
    -- 'a', 'A' - 以混合大小写的字母字符返回字符串
    -- 'x', 'X' - 以大写字母数字字符返回字符串
    -- 'p', 'P' - 以任何可打印字符返回字符串。
    -- 如果输入不是上述字符,返回的字符串为大写字母。 且长度值为1,超过长度将会报错。
    -- 参数:len 指定返回字符串的长度
    -- 返回随机字符串
    -- 调用
    SELECT dbms_random.string('u', 10) FROM dual;
    SELECT dbms_random.string('l', 10) FROM dual;
    SELECT dbms_random.string('a', 10) FROM dual;
    SELECT dbms_random.string('x', 10) FROM dual;
    SELECT dbms_random.string('p', 10) FROM dual;
    SELECT dbms_random.string('uu', 10) FROM dual; -- 超长 报错
    SELECT dbms_random.string('w', 10) FROM dual; -- 输入其他字符,以大写字母字符返回字符串
    
    复制
  6. TERMINATE

    注意:此过程在ORACLE 11g 中已弃用,虽然支持,但不推荐使用,仅用于向后兼容

    -- DBMS_RANDOM.TERMINATE; -- 功能:用于结束包 -- 无返回值 -- 调用 CALL dbms_random.terminate();
    复制
  7. VALUE

    -- DBMS_RANDOM.VALUE RETURN NUMBER;
    -- DBMS_RANDOM.VALUE(low  IN  NUMBER, high IN  NUMBER) RETURN NUMBER;
    -- 功能:如不提供low、hign参数,那么返回随机数值大于等于0,小于1。如提供low、hign参数那么返回随机数值大于等于low,小于hign。
    -- 参数:low 生成的随机数大于等于low 
    -- 参数:high 生成的随机数小于high  
    -- 调用
    SELECT dbms_random.value FROM dual; 
    SELECT dbms_random.value (10,20) FROM dual; 
    
    复制


三、运行测试

使用羲和(Halo)数据库或ORACLE数据库运行下面的SQL语句:

-- DBMS_RANDOM.INITIALIZE
CALL dbms_random.initialize(1);

-- DBMS_RANDOM.NORMAL
SELECT dbms_random.normal FROM dual; 

-- DBMS_RANDOM.RANDOM
SELECT dbms_random.random FROM dual; 

-- DBMS_RANDOM.SEED
CALL dbms_random.seed(100);

-- DBMS_RANDOM.STRING 大写
SELECT dbms_random.string('u', 10) FROM dual;  	
-- 小写
SELECT dbms_random.string('l', 10) FROM dual;
-- 大小写混合  
SELECT dbms_random.string('a', 10) FROM dual;  
-- 字母数字混合
SELECT dbms_random.string('x', 10) FROM dual;  
-- 允许非字母数字存在
SELECT dbms_random.string('p', 10) FROM dual;   
-- 超长 报错
SELECT dbms_random.string('uu', 10) FROM dual; 	
-- 输入其他字符,以大写字母字符返回字符串
SELECT dbms_random.string('w', 10) FROM dual; 	

-- DBMS_RANDOM.TERMINATE
CALL dbms_random.terminate(); 

-- DBMS_RANDOM.VALUE
SELECT dbms_random.value FROM dual; 
SELECT dbms_random.value (10,20) FROM dual; 
复制



若文中存在错误或不当之处,敬请指出,以便我进行修正和完善。希望这篇文章能够帮助到你。

最后修改时间:2024-01-10 15:10:09
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 一、DBMS_RANDOM
  • 二、详细介绍
  • 三、运行测试