作业,不会,急!!!!
创建函数verify_function 。
要求:
该函数提供限制:
口令长度至少为4;
口令不能和用户名相同;
口令至少由字母,数字,一个符合组成;(特殊符号:!"#$%&()``*+,-/:; <=>?_)
口令不能是一个简单的明显的单词;(单词:'welcome', 'database', 'account', 'user', 'password', 'oracle', 'computer', 'abcd')
口令至少有3个字符与以前的口令不同;
该函数提供三个varchar2类型的输入参数,分别是:username、password、old_password;
该函数返回boolean类型,即口令是否校验成功。
创建函数verify_function 。
要求:
该函数提供限制:
口令长度至少为4;
口令不能和用户名相同;
口令至少由字母,数字,一个符合组成;(特殊符号:!"#$%&()``*+,-/:; <=>?_)
口令不能是一个简单的明显的单词;(单词:'welcome', 'database', 'account', 'user', 'password', 'oracle', 'computer', 'abcd')
口令至少有3个字符与以前的口令不同;
该函数提供三个varchar2类型的输入参数,分别是:username、password、old_password;
该函数返回boolean类型,即口令是否校验成功。
这句是什么意思
大体如下
create or replace function func(v_username in varchar2,
v_password in varchar2,
v_old_password in varchar2)
return boolean
as
num number:=0;
begin
if length(v_password)<4
or v_password in (v_username,'welcome','database','account','user','password','oracle','computer','abcd')
or not regexp_like(v_password,'[[:alpha:]]+')
or not regexp_like(v_password,'[[:digit:]]+')
or not regexp_like(v_password,'[[:punct:]]+')
then return false;
end if;
for i in 1..length(v_password) loop
for j in 1..length(v_old_password) loop
if substr(v_password,i,1)=substr(v_old_password,j,1) then goto 1;
end if;
end loop;
num:=num+1;
if num>=3 then return true; end if;
<<1>>
null;
end loop;
return false;
end func;
测试begin
if func('a','bce13)','abcdef') then
dbms_output.put_line(1);
else dbms_output.put_line(0);
end if;
end;这里将 口令至少由字母,数字,一个符合组成 这句理解为必须同时包含字母数字和符号。如果理解有错,则将3个regexp_like部分改下