Oracle生成随机数
发布时间:2026/10/25 1:40:32 锦皓数字建站

一、随机函数指可以产生随机数的函数它是可以产生随机的数字或者字符串1.语法格式①RAND()可以产生0到1之间的随机数②dbms_random.value(数1(小),数2(大))生成数1-数2之间的随机数,默认生成小数 ③dbms_random.string(‘格式’,数)u大写字母l小写字母a字母x大写字母和数字p可打印字符生成随机字符串 注意Ⅰ、Oracle 11g中没有RAND函数可以使用DBMS_RANDOM包中的函数来生成随机数。Ⅱ、DBMS_RANDOM包提供了多种随机数生成函数比如DBMS_RANDOM.VALUE返回一个0到1之间的随机数。DBMS_RANDOM.RANDOM返回一个0到N之间的整数随机数其中N需要作为参数传递。DBMS_RANDOM.STRING返回一个由指定字符集中的字符组成的随机字符串可以指定字符串的长度和字符集。2.使用DBMS_RANDOM包中的函数生成随机数①生成一个0到1之间的随机数SELECT DBMS_RANDOM.VALUE AS random_number FROM DUAL;②生成一个0到100之间的整数随机数SELECT FLOOR(DBMS_RANDOM.VALUE(0, 101)) AS random_number FROM DUAL;③生成一个由10个字符组成的随机字符串字符集为大写字母和数字SELECT DBMS_RANDOM.STRING(‘U’, 10) AS random_string FROM DUAL;④随机打印5个大小写字母/字符/数字 SELECT dbms_random.value(100,0) a, dbms_random.string(‘u’,5) b, --随机打印5个大写字母 dbms_random.string(‘l’,5) c, --随机打印5个小写字母 dbms_random.string(‘a’,5) d, --随机打印5个字母 dbms_random.string(‘x’,5) e, --随机打印5个大写字母和数字 dbms_random.string(‘p’,5) f --随机打印5个可打印字符FROM dual;⑥生成一个1-100的随机数如果这个数大于95,返回1等奖如果这个数大于85,返回2等奖如果这个数大于70,返回3等奖否则返回谢谢惠顾。declarev1 number:dbms_random.value(1,100);begin if v195 then dbms_output.put_line(‘1等奖’); elsif v185 then dbms_output.put_line(‘2等奖’); elsif v170 then dbms_output.put_line(‘3等奖’); else dbms_output.put_line(‘谢谢惠顾’);end if;end; ⑦使用RAND函数可以运用在需要产生随机数的场合下例如在测试、模拟等场合下使用。比如可以使用RAND()函数产生一个0到100之间的随机整数SELECT FLOOR(RAND() * 100) AS random_number;总结Ⅰ、DBMS_RANDOM包中的随机数生成函数是基于伪随机数生成算法实现的因此生成的随机数并不是真正的随机数而是在一定程度上的伪随机数。Ⅱ、rand函数是MySQL和PHP中的函数用于生成随机数。在MySQL中rand函数可以在任何版本中使用。在PHP中rand函数可以在PHP 4和PHP 5中使用。其他数据库系统如Oracle、SQL Server等中没有rand函数它们使用不同的方式来生成随机数。二、自定义函数指用户自己定义的函数可以根据自己的需求来编写函数。1.语法格式CREATE FUNCTION function_name (parameters) --function_name为函数名parameters为函数参数RETURNS return_type --return_type为返回值类型AS BEGIN function_body; --function_body为函数体END; --详细描述理解create or replace function --or replace 覆盖函数名(参数 [in]|out|in out 类型…) --不写默认是in后面加类型不写长度return 返回类型is|as [声明变量;]begin 要执行的语句; return 值|变量;[exception] [要执行的语句;] end;2.自定义函数运用实例自定义函数可以运用在需要根据用户自己的需求编写函数的场合下使用。例如①制作一个函数mysign输入一个数如果大于0返回1如果小于0返回-1如果等于0返回0create or replace function mysign(v number) --参数v是要外界输入的不用赋值 return number isbegin if v0 then return 1; elsif v0 then return -1; elsif v0 then return 0; end if;end;调用函数和系统函数的调用方法一样;select sign(100),mysign(‘100’),mysign(-10)from dual;②再制作一个函数输入一个数要求返回他的相反数create or replace function xfs(v number) return number isbegin return -v;end;调用函数select xfs(-0),xfs(0)from dual;③再制作一个函数表示π(没有参数)create or replace function π return number isbegin return acos(-1); --acos(-1) 在数据库里代表πend;调用函数select π,acos(-1)from dual; --比如求半径是3的圆的周长和面积select 2*π*3 周长,π*power(3,2) 面积from dual;④要求创建一个函数当输入一个员工编号时能够返回员工工资create or replace function rs1 (v number) return number isv_sal number; --声明变量begin select sal into v_sal from emp where empnov; return v_sal;end; --调用函数select rs1(7788) from dual;3.自定义函数–有out输出情况比如①要求当输入员工编号时输出员工工资并返回职位create or replace function rs2 (v_empno number,v_sal out number)return varchar2 isv_job varchar2(20);begin select sal,job into v_sal,v_job from emp where empnov_empno;return v_job;end;调用函数因为函数创建时有out输出函数调用就不能和系统函数调用方法一样此时需要采用pl/sql调用declarev1 number;v2 varchar2(20);begin v2:rs2(7788,v1); --返回值:函数名参数1,参数2 dbms_output.put_line(v1||’ ‘||v2);end;②要求自定义一个函数输入员工姓名输出员工工资最后返回员工的部门编号create or replace function rs3(v_name varchar2,v_sal out number)return number isv_deptno number;begin select sal,deptno into v_sal,v_deptno from emp where enamev_name;return v_deptno;end;函数调用declarev_deptno number;v_sal number;begin v_deptno:rs3(‘KING’,v_sal); dbms_output.put_line(v_sal||’ ||v_deptno);end;自定义函数总结·有out一般不用函数·函数一般不包含DML·函数不能包含DDL
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。