使用PL/SQL生成随机密码
2015-06-02 14:51
375 查看
1.建Function程序
CREATE OR REPLACE FUNCTION random_password(in_template IN VARCHAR2) RETURN VARCHAR2 IS l_criteria VARCHAR2(1); l_password VARCHAR2(500); l_pattern VARCHAR2(500); l_indx NUMBER; BEGIN /*1-Character should be UPPERCASE =====> [U] 2- Character should be LOWERCASE =====> [L] 3- Character should be NUMBER =====> 4- Character should be any character =====> [A] 5- Character should be NON-ALPHANUMERIC character =====> [S]*/ l_criteria := ''; l_password := ''; FOR i IN 1 .. length(in_template) LOOP l_criteria := substr(in_template, i, 1); IF upper(l_criteria) = 'U' THEN l_pattern := q'[ABCDEFGHIJKLMNOPQRSTUVWXYZ]'; ELSIF upper(l_criteria) = 'L' THEN l_pattern := q'[abcdefghijklmnopqrstuvwxyz]'; ELSIF upper(l_criteria) = 'N' THEN l_pattern := q'[0123456789]'; ELSIF upper(l_criteria) = 'A' THEN l_pattern := q'[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]'; ELSIF upper(l_criteria) = 'S' THEN l_pattern := q'[~!@#$%^&*()_+-}{|":;?.,<>[]/\]'; ELSE l_pattern := q'[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]'; END IF; l_indx := trunc(length(l_pattern) * dbms_random.value) + 1; l_password := l_password || substr(l_pattern, l_indx, 1); END LOOP; RETURN l_password; END random_password;
2.用法
传入参数:U代表随机一个大写字母
L代表随机一个小写字母
N代表随机一个数字
A代表任何字符
S代表任何特殊符号
例子1:
SQL> select random_password ('ulnasn') from dual; RANDOM_PASSWORD('ULNASN') -------------------------------------------------------------------------------- Hc67|8
例子2:
SQL> select random_password ('99999999999') from dual; RANDOM_PASSWORD('99999999999') -------------------------------------------------------------------------------- agrXKng6bfe
本文地址:http://blog.csdn.net/sunansheng/article/details/46328941
相关文章推荐
- 安装Redis的图形界面管理工具phpRedisAdmin
- 终端下SQLite的使用
- vs2012 连接oracle11g 及数据的insert及select 的总结
- oracle11g密码过期问题
- oracle数据库基本操作
- 无需客户端PLSQL连接Oracle的方法
- MySQL优化的一些经验
- 修改sqlplus默认提示符
- mysql memory 索引
- excel 导入到mysql
- 运维角度浅谈MySQL数据库优化
- 浅析Oracle数据恢复操作
- SQL2005:使用varchar(max)代替text
- SQL2005:使用varchar(max)代替text
- SQL 特殊查询实例 分组、编号、排序、行号
- oracle flashback
- Redis 集群方案
- SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)
- mysql权限审核
- Oracle字符编码与汉字存储长度的处理