사업자번호 유효성 체크Function
1. 먼저 정규식을 통해 특수문자 제거
2. 자리수 체크 하여 10자리가 아닌경우 오류
3. 유효성 체크에서 걸러져도 오류
PARAMETER : 체크할 사업자번호
RETURN : 문자열 'FALSE' 또는 'TRUE'
---------------------------------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION FCHECK_BIZ_NO( p_bizno IN VARCHAR2)
RETURN VARCHAR2 IS
v_ret_val VARCHAR2(30);
v_bizno VARCHAR2(30);
v_calc NUMBER := 0;
BEGIN
IF p_bizno IS NULL THEN RETURN NULL; END IF;
SELECT regexp_replace(Regexp_replace(trim(lower(p_bizno)),'[^a-z,A-Z,0-9]',''),'[[:space:]]{1,}',' ')
INTO v_bizno
FROM dual;
IF ((length(v_bizno) != 10) OR (v_bizno IS NULL)) then RETURN 'FALSE'; END IF;
SELECT CASE WHEN CHK_YN = 'Y' THEN 'TRUE' ELSE 'FALSE' END INTO v_ret_val
FROM
(SELECT DECODE(CHKSUM,0,DECODE(CHKSUM,B.B1,'Y','N'),DECODE(10-CHKSUM,B.B1,'Y','N')) AS CHK_YN
FROM
(SELECT A.* ,
MOD( A1*1+A2*3+A3*7+A4*1+A5*3+A6*7+A7*1+A8*3+A9*5+TRUNC((A9*5)/10,0) ,10) AS CHKSUM
FROM
(SELECT v_bizno,
SUBSTR(v_bizno , 1, 1) A1 ,
SUBSTR(v_bizno , 2, 1) A2 ,
SUBSTR(v_bizno , 3, 1) A3 ,
SUBSTR(v_bizno , 4, 1) A4 ,
SUBSTR(v_bizno , 5, 1) A5 ,
SUBSTR(v_bizno , 6, 1) A6 ,
SUBSTR(v_bizno , 7, 1) A7 ,
SUBSTR(v_bizno , 8, 1) A8 ,
SUBSTR(v_bizno , 9, 1) A9 ,
SUBSTR(v_bizno , 10, 1) B1 --유효성 체크자리
FROM DUAL
)A
) B
);
RETURN v_ret_val;
END;
/
----------------------------------------------------------------------------------------------------------------------------------------