Guest User

walidacja pesel oracle 10

a guest
Mar 25th, 2011
544
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE
  2. FUNCTION           "WALIDUJPESEL" (pc_PESEL VARCHAR2) RETURN INTEGER
  3. IS
  4. TYPE t_Weights IS VARRAY(11) OF PLS_INTEGER;
  5. vt_Weights t_weights := t_weights(1, 3, 7, 9, 1, 3, 7,9,1,3,1);  --- zahardkodowana tabela wag
  6. vn_CheckSum PLS_INTEGER := 0;
  7. vc_PESEL  VARCHAR2(11) ;
  8. BEGIN
  9. --
  10.   IF NVL(LENGTH(REGEXP_REPLACE( pc_PESEL, '[[:blank:]]|[-]', '') ),0) <> 11 THEN
  11.     RETURN 0;
  12.   END IF;
  13.   vc_PESEL :=  REGEXP_REPLACE( pc_PESEL, '[[:blank:]]|[-]', '') ;
  14.   IF REGEXP_LIKE(vc_PESEL,'([0-9]{11,})') AND LENGTH(vc_PESEL ) <> 11 THEN
  15.     RETURN 0;
  16.   END IF;
  17.  
  18.   FOR i IN 1..vt_Weights.COUNT
  19.     LOOP
  20.       vn_CheckSum := vn_CheckSum + SUBSTR( vc_PESEL, i,1) * vt_Weights(i);
  21.     END LOOP;
  22.  
  23.   IF MOD(vn_CheckSum, 10) = 0  THEN
  24.     RETURN 1;
  25.   ELSE
  26.     RETURN 0;
  27.   END IF;
  28. END;
Advertisement
Add Comment
Please, Sign In to add comment