oracle生成随机数函数
来源:互联网 发布:手机淘宝免费模板网 编辑:程序博客网 时间:2024/04/28 12:51
我们做编程,惯性的思维就是把生成随机数交给程序的业务层来做。很少考虑到把生成随机数的任务交给数据库去做。今天在网上看到一篇用数据库生成的随机数函数,写的很好,就转过来大家一起学习学习。
函数体如下:
CREATE OR REPLACE FUNCTION RANDOM_PASSWORD (IN_TEMPLATE IN VARCHAR2)
RETURN VARCHAR2 IS
LC$CRITERIA VARCHAR2(1);
LC$PASSWORD VARCHAR2(500);
LC$PATTERN VARCHAR2(500);
LN$INDX NUMBER;
BEGIN
/*1-Character should be UPPERCASE =====> Abbreviation [U]
2- Character should be LOWERCASE =====> Abbreviation [L]
3- Character should be NUMBER =====> Abbreviation [N]
4- Character should be any character =====> Abbreviation [A]
5- Character should be NON-ALPHANUMERIC character =====> Abbreviation [S]*/
LC$CRITERIA := '';
LC$PASSWORD := '';
FOR I IN 1.. LENGTH(IN_TEMPLATE) LOOP
LC$CRITERIA := SUBSTR(IN_TEMPLATE,I,1);
IF UPPER(LC$CRITERIA ) = 'U' THEN
LC$PATTERN := q'[ABCDEFGHIJKLMNOPQRSTUVWXYZ]';
ELSIF UPPER(LC$CRITERIA ) = 'L' THEN
LC$PATTERN := q'[abcdefghijklmnopqrstuvwxyz]';
ELSIF UPPER(LC$CRITERIA ) = 'N' THEN
LC$PATTERN := q'[0123456789]';
ELSIF UPPER(LC$CRITERIA ) = 'A' THEN
LC$PATTERN := q'[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]';
ELSIF UPPER(LC$CRITERIA ) = 'S' THEN
LC$PATTERN := q'[~!@#$%^&*()_+-}{|":;?.,<>[]/\]';
ELSE
LC$PATTERN := q'[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]';
END IF;
LN$INDX := TRUNC( LENGTH(LC$PATTERN) * DBMS_RANDOM.VALUE) + 1;
LC$PASSWORD := LC$PASSWORD || SUBSTR(LC$PATTERN,LN$INDX,1);
END LOOP;
RETURN LC$PASSWORD;
END RANDOM_PASSWORD;
使用时你可以这样调用:
RANDOM_PASSWORD('ULNASN');
举个例子:
SELECT RANDOM_PASSWORD ('ULNASN') FROM DUAL;
- oracle生成随机数函数
- oracle数据库生成随机数的函数
- Oracle中生成随机数的函数
- Oracle中生成随机数的函数
- 概率、随机数、随机数生成函数
- oracle 中生成随机数
- oracle 中生成随机数
- oracle生成随机数
- Oracle中生成随机数
- oracle生成随机数GUId
- Oracle中生成随机数的函数(转载)
- 一个随机数生成函数
- 一个随机数生成函数
- excel 函数 生成 随机数
- OpenCV函数生成随机数
- rand函数生成随机数
- matlab生成随机数函数
- PHP函数生成随机数
- oracle linux yum源
- ubuntu命令笔记
- linux下修改MySQL编码
- Oracle APEX Report的某一个列根据条件显示不同的颜色
- ZOJ——3622(数论)
- oracle生成随机数函数
- 关于电脑运行速度慢的解决办法
- iOS5 拦截短信
- 疑难问题备忘
- xen网络配置
- .net 执行oracle存储过程时 找不到存储过程名,总是找函数的原因
- Swing布局
- ./configure时 You have an outdated FFmpeg SVN checkout in ffmpeg/, please (re)move or replace it
- redis学习(一)