下面是一个通过PL/SQL写的一个函数,函数的意图是返回一个随机密码,这个随机密码有大些字母和数字组成,密码的字符不能重复。
CREATE OR REPLACE FUNCTION AAS.AAS_RANDOM_PASSWORD_FUN
RETURN VARCHAR2
IS
TEMP VARCHAR2 (8);
/******************************************************************************
NAME: AAS_RANDOM_PASSWORD_FUN
PURPOSE: 产生随机密码(密码不能包含重复字母/ERP ,只能大写字母/10.7,大写字母+数字)
******************************************************************************/
BEGIN
SELECT SUBSTR ('ABXCDKEFGHYIJKLCMNIOPWQRSTUAVWXYBZYXAS', //源字符串一共38位,截取其中4位。
ROUND (DBMS_RANDOM.VALUE (1, 26)), //通过随机函数获取一个1~26之间的数据,把这个数据作为SUBSTR函数的起始位。
4) //从起始位开始,向后截取4位。
|| SUBSTR ('0712534968079351284302', ROUND (DBMS_RANDOM.VALUE (1, 20)), 2) //同理,这个是截取2位数字
INTO TEMP //把结果赋值给Temp
FROM DUAL;
RETURN TEMP; //返回TEMP
END AAS_RANDOM_PASSWORD_FUN;
/