Вы находитесь на странице: 1из 7

CREATE OR REPLACE FUNCTION NON_BLANK(VAR1 VARCHAR2) RETURN NUMBER IS BEGIN IF LENGTH(trim(VAR1)) IS NULL THEN RETURN 0; ELSE RETURN 1; END

IF; END; / ================================ CREATE OR REPLACE FUNCTION IsInteger(a VARCHAR2) RETURN NUMBER AS c Integer; not_integer exception; pragma exception_init(not_integer,-06502); BEGIN c := to_number(a); if c=a then RETURN 1; else return 0; end if; EXCEPTION WHEN not_integer THEN RETURN 0; END; / ================================== CREATE OR REPLACE FUNCTION PATTERN(N VARCHAR2) RETURN NUMBER AS L VARCHAR2(20); L0 VARCHAR2(20); L1 VARCHAR2(20); L2 VARCHAR2(20); L3 VARCHAR2(20); L4 VARCHAR2(20); L5 VARCHAR2(20); L6 VARCHAR2(20); L7 VARCHAR2(20); L8 VARCHAR2(20); L9 VARCHAR2(20); NOTMATCH EXCEPTION; PRAGMA EXCEPTION_INIT(NOTMATCH,-01861); BEGIN L:=LENGTH(N); L0:='0{'||L||'}'; L1:='1{'||L||'}'; L2:='2{'||L||'}'; L3:='3{'||L||'}'; L4:='4{'||L||'}'; L5:='5{'||L||'}'; L6:='6{'||L||'}'; L7:='7{'||L||'}'; L8:='8{'||L||'}'; L9:='9{'||L||'}';

IF REGEXP_LIKE(N,L0) OR REGEXP_LIKE(N,L1) OR REGEXP_LIKE(N,L2) OR REGEXP _LIKE(N,L3) OR REGEXP_LIKE(N,L4) OR REGEXP_LIKE(N,L5) OR REGEXP_LIKE(N,L6) OR REGEXP_LIKE(N,L7) OR REGEXP_LIKE(N,L8) OR REGEXP_LIKE(N,L9) THEN RETURN 1; ELSE RAISE NOTMATCH; END IF; EXCEPTION WHEN NOTMATCH THEN RETURN 0; END; / ================================= CREATE OR REPLACE FUNCTION digit_count(VAR1 VARCHAR2) RETURN NUMBER IS BEGIN IF LENGTH(var1) in (5,9) THEN RETURN 1; ELSE RETURN 0; END IF; END; / ==================================== create or replace function AGE_CHK(DOB VARCHAR2) return number is var1 number; VAR2 DATE; begin VAR2:=TO_DATE(DOB,'MM-DD-YYYY'); var1:=trunc(months_between(sysdate,VAR2)/12); if(var1<=125) and var1>0 then return 1; else return 0; end if; EXCEPTION WHEN OTHERS THEN RETURN 0; end; / ==================================== create or replace function DATE_CHECKING(var1 VARCHAR2) return number is VAR2 DATE; begin VAR2:=TO_DATE(VAR1,'MM-DD-YYYY'); if(var2<=sysdate) and (to_number(to_char(var2,'yyyy'))> to_number(to_char(sysdat e,'yyyy'))-10) then return 1; else return 0; end if; EXCEPTION WHEN OTHERS THEN

RETURN 0; end; / ===================================== CREATE OR REPLACE FUNCTION VIN_CHECK(VECH_NUM VARCHAR2) RETURN NUMBER IS VAR2 NUMBER; BEGIN VAR2:=LENGTH(TRIM(TRANSLATE(UPPER(VECH_NUM),('0123456789ABCDEFGHIJKLMNOPQRSTUVWX YZ'),''))); IF VAR2 IS NULL AND LENGTH(VECH_NUM)=17 THEN RETURN 1; ELSE RETURN 0; END IF; END; / ======================================= CREATE OR REPLACE PROCEDURE POLICY_PROC IS CURSOR C1 IS SELECT * FROM G01_STAGING_UPDATED_POLICY; BEGIN FOR MREC IN C1 LOOP IF ( (NON_BLANK(MREC.COVERAGE_CODE)=1) AND (ISINTEGER(MREC.CUSTOMER_ID)=1 AND NON_BLANK(MREC.CUSTOMER_ID)=1) AND (PATTERN(MREC.CUSTOMER_PHONE)=1) AND (ISINTEGER(MREC.CUSTOMER_ZIP)=1 AND DIGIT_COUNT(MREC.CUSTOMER_ZIP)=1) AND (NON_BLANK(MREC.CUSTOMER_SSN)=1 AND PATTERN(MREC.CUSTOMER_SSN)=1) AND (AGE_CHK(MREC.CUSTOMER_DOB)=1) AND (ISINTEGER(MREC.POLICY_NUMBER)=1 AND NON_BLANK(MREC.POLICY_NUMBER)=1) AND (DATE_CHECKING(MREC.POLICY_ORIG_EFF_DATE)=1) AND TO_DATE(MREC.POLICY_TERM_EFF_DATE,'MM-DD-YYYY') >= TO_DATE(MREC.POLICY_ORIG_EFF_ DATE,'MM-DD-YYYY') AND (ISINTEGER(MREC.PREVIOUS_POLICY_NUMBER)=1) AND (MREC.POLICY_STATUS IN ('CLS','INF','DAC')) AND (ISINTEGER(MREC.COVERAGE_ID)=1 AND NON_BLANK(MREC.COVERAGE_ID)=1) AND (VIN_CHECK(MREC.VIN)=1) AND (DATE_VALID(MREC.POLICY_TERM_EFF_DATE)=1) AND (ISINTEGER(MREC.DEDUCTABLE_VALUE)=1) AND (ISINTEGER(MREC.VEHICLE_MODEL_YEAR)=1) AND (ISINTEGER(MREC.DUR_VHCLE_OWNED)=1) AND (ISAMOUNT(MREC.ACTUAL_COVERAGE_AMOUNT)=1) AND (ISINTEGER(MREC.COVERAGE_LIMIT)=1) AND (ISINTEGER(MREC.CREDIT_SCORE)=1) ) THEN INSERT INTO G01S2POLICY( POLICY_TYPE, DEDUCTABLE_VALUE, COVERAGE_CAT_CODE, COVERAGE_CAT_DESC, COVERAGE_CODE, CUSTOMER_ID,

CUSTOMER_FNAME, CUSTOMER_LNAME, CUSTOMER_ADDRESS, CUSTOMER_PHONE, CUSTOMER_CITY, CUSTOMER_STATE, CUSTOMER_ZIP, CUSTOMER_SSN, CUSTOMER_DOB, PREMIUM_PLAN, VEHICLE_DESC, TIER_DESC, VIN, POLICY_NUMBER, POLICY_PREFIX, POLICY_ORIG_EFF_DATE, POLICY_TERM_EFF_DATE, MULTI_POLICY_DISC_IND, MULTI_VEH_DISC_IND, PAID_IN_FULL_DISC_IND, PREVIOUS_POLICY_NUMBER, AAA_MBR_DISC_IND, POLICY_STATUS, COVERAGE_ID, COVERAGE_DESC, VEHICLE_MODEL_YEAR, VEHICLE_MAKE, VEHICLE_MODEL, VEHICLE_SYMBOL, PHYS_D_SYMBOL, PASV_RSTR_DSC_IND, DUR_VHCLE_OWNED, ANTI_TFT_DISC_IND, ANTI_LBRAK_DSC_IND, VEHICLE_STATUS, BI_PD_SYMBOL, MP_PID_SYMBOL, INSURANCE_FMSCORE, TIER_CODE, ACTUAL_COVERAGE_AMOUNT, COVERAGE_LIMIT, CREDIT_SCORE) VALUES (MREC.POLICY_TYPE, TO_NUMBER(MREC.DEDUCTABLE_VALUE), MREC.COVERAGE_CAT_CODE, MREC.COVERAGE_CAT_DESC, MREC.COVERAGE_CODE, TO_NUMBER(MREC.CUSTOMER_ID), MREC.CUSTOMER_FNAME, MREC.CUSTOMER_LNAME, MREC.CUSTOMER_ADDRESS, MREC.CUSTOMER_PHONE, MREC.CUSTOMER_CITY, MREC.CUSTOMER_STATE, TO_NUMBER(MREC.CUSTOMER_ZIP), MREC.CUSTOMER_SSN, TO_DATE(MREC.CUSTOMER_DOB,'MM-DD-YYYY'), MREC.PREMIUM_PLAN,

MREC.VEHICLE_DESC, MREC.TIER_DESC, MREC.VIN, TO_NUMBER(MREC.POLICY_NUMBER), MREC.POLICY_PREFIX, TO_DATE(MREC.POLICY_ORIG_EFF_DATE,'MM-DD-YYYY'), TO_DATE(MREC.POLICY_TERM_EFF_DATE,'MM-DD-YYYY'), MREC.MULTI_POLICY_DISC_IND, MREC.MULTI_VEH_DISC_IND, MREC.PAID_IN_FULL_DISC_IND, TO_NUMBER(MREC.PREVIOUS_POLICY_NUMBER), MREC.AAA_MBR_DISC_IND, MREC.POLICY_STATUS, TO_NUMBER(MREC.COVERAGE_ID), MREC.COVERAGE_DESC, TO_NUMBER(MREC.VEHICLE_MODEL_YEAR), MREC.VEHICLE_MAKE, MREC.VEHICLE_MODEL, MREC.VEHICLE_SYMBOL, MREC.PHYS_D_SYMBOL, MREC.PASV_RSTR_DSC_IND, TO_NUMBER(MREC.DUR_VHCLE_OWNED), MREC.ANTI_TFT_DISC_IND, MREC.ANTI_LBRAK_DSC_IND, MREC.VEHICLE_STATUS, MREC.BI_PD_SYMBOL, MREC.MP_PID_SYMBOL, MREC.INSURANCE_FMSCORE, MREC.TIER_CODE, TO_NUMBER(MREC.ACTUAL_COVERAGE_AMOUNT), TO_NUMBER(MREC.COVERAGE_LIMIT), TO_NUMBER(MREC.CREDIT_SCORE)); ELSE INSERT INTO G01S2errPOLICY( POLICY_TYPE, DEDUCTABLE_VALUE, COVERAGE_CAT_CODE, COVERAGE_CAT_DESC, COVERAGE_CODE, CUSTOMER_ID, CUSTOMER_FNAME, CUSTOMER_LNAME, CUSTOMER_ADDRESS, CUSTOMER_PHONE, CUSTOMER_CITY, CUSTOMER_STATE, CUSTOMER_ZIP, CUSTOMER_SSN, CUSTOMER_DOB, PREMIUM_PLAN, VEHICLE_DESC, TIER_DESC, VIN, POLICY_NUMBER, POLICY_PREFIX, POLICY_ORIG_EFF_DATE, POLICY_TERM_EFF_DATE, MULTI_POLICY_DISC_IND,

MULTI_VEH_DISC_IND, PAID_IN_FULL_DISC_IND, PREVIOUS_POLICY_NUMBER, AAA_MBR_DISC_IND, POLICY_STATUS, COVERAGE_ID, COVERAGE_DESC, VEHICLE_MODEL_YEAR, VEHICLE_MAKE, VEHICLE_MODEL, VEHICLE_SYMBOL, PHYS_D_SYMBOL, PASV_RSTR_DSC_IND, DUR_VHCLE_OWNED, ANTI_TFT_DISC_IND, ANTI_LBRAK_DSC_IND, VEHICLE_STATUS, BI_PD_SYMBOL, MP_PID_SYMBOL, INSURANCE_FMSCORE, TIER_CODE, ACTUAL_COVERAGE_AMOUNT, COVERAGE_LIMIT, CREDIT_SCORE) VALUES (MREC.POLICY_TYPE, MREC.DEDUCTABLE_VALUE, MREC.COVERAGE_CAT_CODE, MREC.COVERAGE_CAT_DESC, MREC.COVERAGE_CODE, MREC.CUSTOMER_ID, MREC.CUSTOMER_FNAME, MREC.CUSTOMER_LNAME, MREC.CUSTOMER_ADDRESS, MREC.CUSTOMER_PHONE, MREC.CUSTOMER_CITY, MREC.CUSTOMER_STATE, MREC.CUSTOMER_ZIP, MREC.CUSTOMER_SSN, MREC.CUSTOMER_DOB, MREC.PREMIUM_PLAN, MREC.VEHICLE_DESC, MREC.TIER_DESC, MREC.VIN, MREC.POLICY_NUMBER, MREC.POLICY_PREFIX, MREC.POLICY_ORIG_EFF_DATE, MREC.POLICY_TERM_EFF_DATE, MREC.MULTI_POLICY_DISC_IND, MREC.MULTI_VEH_DISC_IND, MREC.PAID_IN_FULL_DISC_IND, MREC.PREVIOUS_POLICY_NUMBER, MREC.AAA_MBR_DISC_IND, MREC.POLICY_STATUS, MREC.COVERAGE_ID, MREC.COVERAGE_DESC, MREC.VEHICLE_MODEL_YEAR, MREC.VEHICLE_MAKE, MREC.VEHICLE_MODEL,

MREC.VEHICLE_SYMBOL, MREC.PHYS_D_SYMBOL, MREC.PASV_RSTR_DSC_IND, MREC.DUR_VHCLE_OWNED, MREC.ANTI_TFT_DISC_IND, MREC.ANTI_LBRAK_DSC_IND, MREC.VEHICLE_STATUS, MREC.BI_PD_SYMBOL, MREC.MP_PID_SYMBOL, MREC.INSURANCE_FMSCORE, MREC.TIER_CODE, MREC.ACTUAL_COVERAGE_AMOUNT, MREC.COVERAGE_LIMIT, MREC.CREDIT_SCORE); END IF; END LOOP; END; /

Вам также может понравиться