Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE
- FUNCTION "WALIDUJPESEL" (pc_PESEL VARCHAR2) RETURN INTEGER
- IS
- TYPE t_Weights IS VARRAY(11) OF PLS_INTEGER;
- vt_Weights t_weights := t_weights(1, 3, 7, 9, 1, 3, 7,9,1,3,1); --- zahardkodowana tabela wag
- vn_CheckSum PLS_INTEGER := 0;
- vc_PESEL VARCHAR2(11) ;
- BEGIN
- --
- IF NVL(LENGTH(REGEXP_REPLACE( pc_PESEL, '[[:blank:]]|[-]', '') ),0) <> 11 THEN
- RETURN 0;
- END IF;
- vc_PESEL := REGEXP_REPLACE( pc_PESEL, '[[:blank:]]|[-]', '') ;
- IF REGEXP_LIKE(vc_PESEL,'([0-9]{11,})') AND LENGTH(vc_PESEL ) <> 11 THEN
- RETURN 0;
- END IF;
- FOR i IN 1..vt_Weights.COUNT
- LOOP
- vn_CheckSum := vn_CheckSum + SUBSTR( vc_PESEL, i,1) * vt_Weights(i);
- END LOOP;
- IF MOD(vn_CheckSum, 10) = 0 THEN
- RETURN 1;
- ELSE
- RETURN 0;
- END IF;
- END;
Advertisement
Add Comment
Please, Sign In to add comment