Advertisement
Guest User

ISBT128

a guest
Jun 13th, 2012
594
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 0.80 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION isbt128 (p_input VARCHAR2) RETURN VARCHAR2
  2.  
  3. IS
  4.  
  5.   v_caracter VARCHAR2(2);
  6.   v_digito VARCHAR2(2);
  7.   v_f_string_nova VARCHAR2(200);
  8.   v_pos1 INTEGER := 0;
  9.   v_peso INTEGER := 0;
  10.   v_soma INTEGER := 103;
  11.   v_resto INTEGER;
  12.   v_valcaracter INTEGER;
  13.  
  14. BEGIN
  15.  
  16.   v_f_string_nova := 'Ë' || p_input;
  17.      
  18.   WHILE v_pos1 < LENGTH(p_input) LOOP
  19.       v_caracter := SUBSTR(p_input, v_pos1 + 1, 1);
  20.       v_peso := v_pos1 + 1;
  21.  
  22.       v_valcaracter := ASCII(v_caracter) - 32;
  23.  
  24.       v_soma := v_soma + (v_peso * v_valcaracter);
  25.       v_pos1 := v_pos1 + 1;
  26.       v_resto := v_soma MOD 103;
  27.   END LOOP;
  28.          
  29.   v_digito := CHR(v_resto + 32);
  30.              
  31.   v_f_string_nova := v_f_string_nova || v_digito || 'Î';
  32.              
  33.   RETURN v_f_string_nova;
  34.  
  35. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement