F_PASSWDCHECK('암호');
1. 암호의 길이는 최소 7글자이고 최대 10글자이다.
2. 암호속에는 최소한 영문자,숫자,특수기호가 1 글자 이상 포함되어야 한다.
3. 결과값이 옳바르다면 RETURN 값으로 1
4. 결과값이 올바르지 않다면
암호길이의 불이행 : RETURN 값으로 2
문자(영/숫자/특수)기호 조합의 불이행 : RETURN 값으로 3
을 출력하도록 하는 함수를 생성하라. */
--이러한 함수를 생성하라.
F_PASSWDCHECK |
CREATE OR REPLACE FUNCTION F_PASSWDCHECK (V_PASSWD IN VARCHAR2) RETURN NUMBER IS
V_RESULT NUMBER; V_NUM NUMBER; V_STR NUMBER:=0; --초기값은 0, 영문자가 사용되면 1 V_SU NUMBER:=0; --초기값은 0, 숫자가 사용되면 1 V_SPECIAL NUMBER:=0; --초기값은 0, 특수문자가 사용되면 1
BEGIN IF LENGTH(V_PASSWD) <7 or LENGTH(V_PASSWD) >10 THEN V_RESULT:=2;
ELSE
FOR i IN 1..LENGTH(V_PASSWD) LOOP
V_NUM:=ASCII(SUBSTR(V_PASSWD,i,1));
IF (V_NUM >=65 AND V_NUM <=90) OR --대문자 (V_NUM >=97 AND V_NUM <=122) --소문자 THEN V_STR:=1;
ELSIF (V_NUM >=48 AND V_NUM <=57 ) --숫자 THEN V_SU:=1;
ELSIF (V_NUM >=33 AND V_NUM <=47 ) OR (V_NUM >=58 AND V_NUM <=64 ) OR (V_NUM >=91 AND V_NUM <=96 ) OR (V_NUM >=123 AND V_NUM <=126 ) THEN V_SPECIAL:=1; END IF;
END LOOP;
IF (V_STR+V_SU+V_SPECIAL)=3 THEN V_RESULT:=1;
ELSE V_RESULT:=3;
END IF;
END IF;
RETURN V_RESULT; END; / |
위 함수가 제대로 작동하는지 TEST 하기 위해 아래와 같이 임의의 PassWd들을 입력해보면,
SELECT F_PASSWDCHECK('DBA007$'),
F_PASSWDCHECK('d7$'),
F_PASSWDCHECK('abcdef$'),
F_PASSWDCHECK('abcdef7'),
F_PASSWDCHECK('abcdsdfadsfassa#3')
from dual;
그림과 같이 올바른 값에는 1,
길이를 만족치 못한 값에는 2,
문자조합을 만족치 못한 값에는 3이 출력되어지는 것을 알 수 있다.
'Database' 카테고리의 다른 글
Undo TableSpace 관리(생성/제거) (0) | 2009.04.16 |
---|---|
Control File의 추가 및 삭제 그리고 복구 (0) | 2009.04.16 |
일반 USER가 임의적으로 LOCK을 발생시키고, 관리자가 LOCK을 찾아내는 법 (0) | 2009.04.16 |
Oracle Structure 셋째날(Undo Table) (0) | 2009.04.16 |
ORACLE Structure 첫날 정리 (0) | 2009.04.14 |
총괄적 PL/SQL 실습-도서대여점 (0) | 2009.04.13 |
04월10일 이론 및 실습 Trigger (0) | 2009.04.13 |
04월09일 PL_SQL 실습 및 이론 (2) (1) | 2009.04.09 |
04월09일 PL/SQL 실습 및 이론 (1) (0) | 2009.04.09 |
4월 7일 PL/SQL (0) | 2009.04.09 |