jueves, 30 de mayo de 2019

Hallar el digito verificador a partir del número de Cédula - Sybase

CREATE FUNCTION "f_digito_verificador_fv"( IN p_cedula varchar (7)  )
RETURNS VARCHAR(1)

BEGIN    /*FUNCION QUE HALLA EL DIGITO VERIFICADOR A PARTIR DEL NUMERO DE CEDULA - BY .:fativilla:. 2019.05.30*/
    /*SET - PARAGUAY*/
    DECLARE i numeric (1);
    DECLARE mult numeric (1);
    DECLARE valor varchar(1);
    DECLARE valor_num NUMERIC (4);
    DECLARE v_Digit NUMERIC (4);
    DECLARE DV varchar(1);

    SET i = 1 ;
    SET mult=LENGTH(p_cedula)+1;
    SET valor_num=0;

    WHILE i <= 8 LOOP
       SET valor = substring(p_cedula, i, 1);
       SET valor_num= valor_num + ( cast ( valor as numeric) * mult  ) ;
       SET mult=mult-1;
       SET i=i+1;
    END LOOP ;

  
    IF  MOD (valor_num, 11)>1 THEN
       SET  v_digit = 11 - MOD (valor_num, 11);
    ELSE
       SET  v_Digit = 0;
    END IF;
   
   
    SET DV=CAST(v_Digit AS VARCHAR(1));
  
    RETURN "DV";
END